前端算法之快速排序(JS版)
来源:互联网 发布:随身wifi无限流量 知乎 编辑:程序博客网 时间:2024/06/05 21:49
快排
1.基本原理:快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
2.算法实现:
<1>.从数列中挑出一个元素,称为 “基准”(pivot);
<2>.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
<3>.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
function quickSort(arr,left,right){ var i=left; var j=right; var temp; while(i<j) { for (; i < j && arr[j] >= arr[left]; j--); for (; i < j && arr[i] <= arr[left]; i++); if (i < j) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } temp=arr[left]; arr[left]=arr[i]; arr[i]=temp; if(i>left){ quickSort(arr,left,i-1); }if(right>i){ quickSort(arr,i+1,right); }}arr=[3,5,2,6,1,7,9,4,8];quickSort(arr,0,8);alert(arr);
3.时间复杂度
最好情况:O(nlogn);
最坏情况:O(n^2); //有序序列时;
平均情况:O(nlogn);
4.空间复杂度
O(logn);
5.不稳定性
一个数组 2,1,1 第一轮交换时 2和第二个1交换,两个1的位置发生了变化,所以是不稳定的。
阅读全文
0 0
- 前端算法之快速排序(JS版)
- 前端算法之简单排序(JS版)
- 排序算法之快速排序Java版
- 排序算法 之 快速排序(quicksort)
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- [算法]之快速排序
- 算法之--快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 浅析Android恶意应用
- 通过RMAN备份恢复数据库到其他服务器
- highcharts 动态页面显示!
- I
- 多线程
- 前端算法之快速排序(JS版)
- 关于获取日期的一些问题
- Google 浏览器添加JSON格式插件
- hdu 4941 Magical Forest map
- json对象和字符串的相互转换
- Struts2学习第二天:通配符精简struts.xml,访问web元素
- 开头更
- CMMI1.3引论培训学习笔记-过程域的基本概念学习
- web.xml中文件的执行顺序