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

  

本文实例讲述了JavaScript实现的选择排序算法。分享给大家供大家参考,具体如下:

  

是人们最熟悉的比较方式,其<强>算法思想为:

  

代码如下:

        & lt; !DOCTYPE html>   & lt; html>   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; title> JavaScript选择排序& lt;/title>   & lt;/head>   & lt; body>   & lt;脚本type=" text/javascript祝辞   函数selectSort (num){//选择排序   var分钟;//最小值   (var外=0;outer< nums.length-1;外+ +){//外循环选中元素   min=外;   (var内在=外+ 1,inner<=nums.length; + +内){   如果(num(内部)& lt; num(分钟)){//如果内循环中元素比选中元素小   min=内部;//将其标为最小元素   }//直到每次外循环的最小元素   交换(num外,min);//最小值被调整到合适的位置   }   }   }   函数交换(arr, i, j){//交换位置   var temp=arr[我];   arr[我]=arr [j];   arr [j]=temp;   }   函数显示(num){//显示数组   我(var=0; i< nums.length;我+ +){   文档。写(num[我]+ ');   }   document . write (' & lt; br> ');   }   var num=[6 8 0, 6、7、4、3、5、5、10];   显示(num);//6 8 0 5 6 7 4 3 5 10   selectSort (num);   显示(num);//0 3 4 5 6 5 6 7 9 10   & lt;/script>   & lt;/body>   & lt;/html>      之前      

分析可得,简单选择排序的时间复杂度为<强> O (n2) 强。选择排序的主要操作是进行关键字之间的比较,因此改进简单选择排序应该从如何减少比较出发,其实现实生活中就有一个很好的例子,就是比赛总的锦标赛。8个人中选出冠军其实不需要7 + 6 + 5=18场比赛,可以通过两两比较也就是11场比赛。这种方法叫做。

  

是一种按照锦标赛的思想进行选择排序的方法,首先对n个记录的关键字进行两两比较,然后在其中n/2个较小者之间再进行两两比较,直到找出最小关键字。可以通过一个完全二叉树来表示,由于含有n个结点的完全二叉树的深度为为log2n + 1,所以排序过程中每选择一个次小关键字仅需要为log2n次操作,所以其时间复杂度<强> O (nlog2n) 强劲,但是这种排序有一种缺点就是占用空间大。

  

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

  

所以我们需要介绍一种更加优秀的排序,也就是。

  

<强>附:

  

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

  

堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得当前无序区中选取最大(或最小)关键字的记录变得简单。我们以大跟堆为例子,排序的基本操作如下:

  

首先是,建堆就是不断调整堆的过程,从len2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从len2到0处一直调用调整堆的过程,建堆的时间复杂度为O (n)。
  接下来是,调整堆在建堆和堆排序的过程中都会用的到,利用的思想是比较节点我和它的孩子节点左(i)和右(i),选出三者最大(或最小)者,如果最大(小)值不是节点我而是它的一个子节点,那么交换两个节点,然后继续递归。
  然后是:<强> 强调整堆的时间复杂度为<强> O(为log2n)
  所以堆排序的时间复杂度为O (nlog2n)。堆排序是就地排序,其辅助空间为O(1)。但是它不稳定,(是指如果在排序的序列中,存在前后相同的两个元素的话,排序前和排序后他们的相对位置不发生变化)。

  

下面模拟建堆的过程:

  

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

  

堆排序对于记录数较少的文件并不值得提倡,但是对于n较大的文件还是挺有效的。

  

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

  

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

  

希望本文所述对大家JavaScript程序设计有所帮助。

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