快速排序(Quicksort)是对冒泡排序的一种改进,是一种分而治之算法归并排序的风格.

核心的思想就是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

理论上的步骤:

  1. 找到一个“支点”项目在数组中,可以是中心点,基准
  2. 在阵列中的第一项开始指针(左指针)。
  3. 在数组中的最后一个项目开始一个指针(右指针)。
  4. 而在左指针数组中的值小于枢轴值,将左指针向右(加1)。 继续,直到在左指针的值大于或等于所述枢轴值。
  5. 而在合适的指针数组中的值大于枢轴值,将右指针向左(减去1)。 继续下去,直到在正确的指针的值小于或等于所述枢轴值。
  6. 如果左指针是小于或等于右指针,然后交换的值在数组中的这些位置。
  7. 移动左指针向右由1和右指针向左之一。
  8. 如果左指针和右指针不符合,请转到步骤1。
 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> </body>
</html>
<script type="text/javascript">
/***
* 快速排序 Quicksort
* 第一步 在数据集之中,选择一个元素作为“基准”。
* 第二步 所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。
* 第三步 对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
*
*/
var arr_style = [
{name: 'a', phone: 1, value: 'val_4'},
{name: 'b', phone: 5, value: 'val_3'},
{name: 'd', phone: 3, value: 'val_2'},
{name: 'c', phone: 4, value: 'val_1'},
{name: 'e', phone: 13, value: 'val_5'},
{name: 'f', phone: 23, value: 'val_6'},
{name: 'g', phone: 14, value: 'val_7'},
{name: 'h', phone: 43, value: 'val_8'}
];
var arr = [];
for(var a =0; a< arr_style.length; a++){
arr[a]= arr_style[a].phone;
}
var quicksort = function(arr){
if(arr.length <= 1){return arr;}
var pivotIndex = Math.floor(arr.length/2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = []; for(var i = 0; i< arr.length; i++){
if(arr[i] < pivot){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return quicksort(left).concat([pivot], quicksort(right));
}
var result = quicksort(arr);
console.log(JSON.stringify(result));
</script>

最新文章

  1. MySql 死锁时的一种解决办法
  2. JQuery Ajax调用asp.net后台方法
  3. asp.net mvc 之旅—— 第四站 学会用Reflector调试我们的MVC框架代码
  4. 【Python】用户登录三次锁定
  5. php5.5新函数array_column
  6. ORA-15025: could not open disk 处理
  7. 武汉北大青鸟解读2016年10大IT热门岗位
  8. rsync服务安装
  9. Thinking In Java读书笔记--对象导论
  10. Erasure Coding in WAS简单译文
  11. [Oracle] UNIX与Windows 2000上Oracle的差异(II)
  12. WSUS补丁下载速度慢解决办法
  13. Keuskal算法模板
  14. bootstrap-table 分页
  15. 深入剖析kafka架构内部原理
  16. 21.翻译系列:Entity Framework 6 Power Tools【EF 6 Code-First系列】
  17. 关于Thinkphp5类命名导致的“模块不存在”问题
  18. hihoCoder 1015 KMP算法(kmp)
  19. CLIENT_0004:Unable to find valid Kerberos ticket cache (kinit)
  20. Basic Auth

热门文章

  1. solr索引大小对比
  2. JavaScript鼠标事件
  3. 【坑】记录一个docker 1.13.1 build 07f3374 版本的坑
  4. 06 python操作MySQL和redis(进阶)
  5. Manacher(马拉车)学习笔记
  6. 幸运三角形 南阳acm491(dfs)
  7. Json格式化时间
  8. R语言学习笔记(十五):获取文件和目录信息
  9. java web项目使用ant编译将不同的功能代码打包成jar,进而分局点将项目打包成不同的tar.gz包进而部署
  10. js获取浏览器内容宽高(小计)