手机版

JavaScript实现的选择性排序算法实例分析

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

本文举例说明了用JavaScript实现的选择性排序算法。分享给大家参考,如下:

简单选择排序是最常见的比较方法,它的算法思想是从数组的开始将第一个元素与其他元素进行比较。检查完所有元素后,最小的元素将被放在数组的第一个位置,然后算法将从第二个位置继续。这个过程会一直持续下去。当它到达数组的倒数第二个位置时,所有数据都将被排序。

代码如下:

!doctype html townleta charset=' utf-8 ' title JAVAScript select sort/title/head dyscript type=' text/JAVAScript '函数select sort(nums){//select sort var min;//最小值为(var outer=0;outer nums . length-1;Outer ){//外循环选择元素min=outerfor(var inner=outer 1;inner=nums.lengthinner){ If(nums[inner]nums[min]){//如果内循环中的元素小于所选元素,min=inner//将其标记为最小元素}//直到每个外循环的最小元素交换(nums,outer,min);//最小值调整到合适的位置}}}函数swap(arr,I,j){//swap position var temp=arr[I];arr[I]=arr[j];arr[j]=温度;}函数show(nums){//显示数组for(var I=0;分钟长度;I){ document . write(nums[I]' ');} document . write(' br ');} var nums=[6,8,0,6,7,4,3,5,5,10];show(nums);//6 8 0 6 7 4 3 5 5 10 select sort(nums);show(nums);//0 3 4 5 6 6 7 9 10/脚本/正文/html分析表明,简单排序的时间复杂度为O(n2)。选择性排序的主要操作是比较关键词,因此改进简单的选择性排序应从如何减少比较入手。其实现实生活中有一个很好的例子,那就是通用冠军。其实从8个人中选冠军不需要7.65=18局,但是可以成对比较,也就是11局。这种方法称为树选择排序。

树选择性排序是根据锦标赛的思想进行选择性排序的一种方法。首先成对比较N个记录的关键词,然后成对比较n/2个记录中较小的一个,直到找到最小的关键词。它可以用一个完整的二叉树来表示。由于n个节点的完全二叉树深度为log2n ^ 1,在排序过程中只需要log2n次操作来选择一个子关键字,因此其时间复杂度为O(nlog2n)。但是,这种排序的缺点是占用空间大。

所以我们需要引入一种更好的排序,那就是堆排序。

附件:堆排序算法

堆排序只需要一个记录大小的辅助空间,每个要排序的记录只占用一个存储空间。

堆排序利用了记录在大根堆(或小根堆)顶部的最大(或最小)关键字的特性,使得在当前无序区域中选择具有最大(或最小)关键字的记录变得容易。我们以大鞋跟堆为例。排序的基本操作如下:

第一步是构建堆,这是不断调整堆的过程,从len2开始到第一个节点,其中len是堆中的元素数量。堆构建的过程是线性的,从len2到Len 0调用调整堆的过程。堆构建的时间复杂度为O(n)。下一步是调整堆,这在堆构建和堆排序过程中使用。其思想是将节点I与其左(I)和右(I)的子节点进行比较,并选择三个子节点中最大的(或最小的)。如果最大(最小)值不是节点I而是子节点,那么交换这两个节点,然后继续递归。然后堆排序:取出堆的根节点,用最后一个元素替换根节点,继续对前面的len-1节点进行堆调整的过程,然后取出根节点,直到所有节点都取出。将堆的时间复杂度调整为O(log2n),这样堆排序的时间复杂度为O(nlog2n)。堆排序是原地排序,其辅助空间为O(1)。但是不稳定。(排序的稳定性是指如果排序前后有两个元素相同,则排序前后它们的相对位置不会发生变化。).

以下模拟堆构建过程:

对于记录较少的文件,堆排序不值得推广,但是对于n较大的文件,堆排序非常有效。

更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、0103010。

希望本文对JavaScript编程有所帮助。

版权声明:JavaScript实现的选择性排序算法实例分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。