算法24 ◉‿◉ 快速排序
本帖最后由 不二如是 于 2017-5-28 07:07 编辑http://xxx.fishc.com/forum/201705/05/225545py2j222x5z6x55n2.png
按照提示,完成代码,秀秀你的编程能力!
不许看答案,否则打屁屁
程序分析:
快速排序(Quick Sort)的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法如下:
<1>.从数列中挑出一个元素,称为 “基准”(pivot);
<2>.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
<3>.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
源代码:
**** Hidden Message *****
○面试题索引贴●
如果喜欢,请订阅{:10_303:} :
HTML5 - 庖丁解牛 + JavaScript - 庖丁解牛
学习一下
学习学习 学习一下 学习 em 学习 <!DOCTYPE html>
<html>
<head>
<title>24</title>
<meta charset="utf-8">
<script type="text/javascript">
window.onload=function(){
// var list1=new Array(456,789,1,7,9,3333,888,3,12,8);
var list1=new Array();
for(var j=0;j<10000;j++){
list1=Math.floor(Math.random()*(10000-1)+1);
}
var s=new Date();
document.write(kspx(list1));
var e=new Date();
console.log(e-s);
}
function kspx(list){
if(list.length<=1){
return list;
}
var jidindex=Math.floor(list.length/2);
var jid=list.splice(jidindex,1);
var left=[];
var right=[];
for(var i=0;i<list.length;i++){
if(list<jid){
left.push(list);
}else{
right.push(list);
}
}
return kspx(left).concat(,kspx(right));
}
</script>
</head>
<body>
</body>
</html> 666 快快快 kk {:10_243:} 学习 . 回复 学习学习
学习学习 1
看看跟我想的是不是一样 1
页:
[1]
2