基本排序算法原理与实现方法详解【插入/选择(2)

function quickSort(arr){ function swap(arr,right,left){ var tmp = arr[right]; arr[right]=arr[left]; arr[left]=tmp; } function partition(arr,left,right){//分区操作, var pivotValue=arr[right]//最右面设为标准 var storeIndex=left; for(var i=left;i<right;i++){ if(arr[i]<=pivotValue){ swap(arr,storeIndex,i); storeIndex++; } } swap(arr,right,storeIndex); return storeIndex//返回标杆元素的索引值 } function sort(arr,left,right){ if(left>right) return; var storeIndex=partition(arr,left,right); sort(arr,left,storeIndex-1); sort(arr,storeIndex+1,right); } sort(arr,0,arr.length-1); return arr; }

时间复杂度O(nlogn)

冒泡排序

基本排序算法原理与实现方法详解【插入/选择

算法描述:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。5.

5 6 3 1 8 7 2 4 [5 6] 3 1 8 7 2 4 //比较5和6 5 [6 3] 1 8 7 2 4 5 3 [6 1] 8 7 2 4 5 3 1 [6 8] 7 2 4 5 3 1 6 [8 7] 2 4 5 3 1 6 7 [8 2] 4 5 3 1 6 7 2 [8 4] 5 3 1 6 7 2 4 8 // 这样最后一个元素已经在正确位置,所以下一次开始时候就不需要再比较最后一个

编程思路:外循环控制需要比较的元素,比如第一次排序后,最后一个元素就不需要比较了,内循环则负责两两元素比较,将元素放到正确位置上

function bubbleSort(arr){ var len=arr.length; for(var i=len-1;i>0;i--){ for(var j=0;j<i;j++){ if(arr[j]>arr[j+1]){ var tmp = arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp } } } return arr; }

时间复杂度O(n^2)

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具测试上述代码运行效果。

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c2e860c8122b1092c93fe90074c6f07a.html