JavaScript实现快速排序的方法分析

前端之家收集整理的这篇文章主要介绍了JavaScript实现快速排序的方法分析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_404_0@本文实例讲述了JavaScript实现快速排序的方法分享给大家供大家参考,具体如下:


@H_4040@<span style="font-size: medium">

思想:


@H
404_0@通过分治思想、递归方法将数据依次分解为包含较小元素和较大元素的不同子序列


@H_4040@1.在数组中选择一个元素为基准


@H
4040@2.对数组进行遍历,小于基准的元素都移到基准的左边,大于基准的元素都移到基准的右边


@H
4040@3.对基准左边和右边的两个子集,不断重复前两步,直到所有子集只剩下一个元素为止


@H
404_0@<span style="font-size: medium">

实现代码


<div class="jb51code">
<pre class="brush:js;">
function sqort(arr){
if(arr.length===0){
return [];
}
var left=[];
var right=[];
var pivot=arr[0];//(基准以首元素)
for(var i=1;i<arr.length;i++){
if(arr[i]<pivot){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return sqort(left).concat(pivot,qsort(right));//递归
}
var a=[];
for (i=0;i<10;++i){
a[i]=Math.floor(Math.random()*100+1);
}
console.log(a);
console.log(sqort(a));
//(基准以中间元素的情况)
function sqort(arr){
if(arr.length<=1){
return arr;
}
var left=[];
var right=[];
var pivotIndex=Math.floor(arr.length/2);
var pivot=arr.splice(pivotIndex,1)[0];//(基准以中间元素)
for(var i=1;i<arr.length;i++){
if(arr[i]<pivot){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return sqort(left).concat(pivot,sqort(right));//递归
}
var a=[12,34,23,78,26];
console.log(a);
console.log(sqort(a));

注:

对于较小数组和较大数组分别递归调用sqort()函数,当递归结束时候,再将较小的数组与基准以及较大的数组连接起来形成最终的有序数组并返回。

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

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

@H_404_0@更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《错误与调试技巧总结》

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

猜你在找的JavaScript相关文章