JavaScript快速排序实现实例教程
来源:才华咖 本文已影响1.04W人
来源:才华咖 本文已影响1.04W人
目前最常见的排序算法大概有七八种,理解和掌握各种排序算法似乎是一个合格的程序员所必须要掌握的。今天想要和大家分享快速排序算法的Javascript的实现。
快速排序(Quicksort),又称为 划分交换排序(partition-exchange sort),最早是由东尼·霍尔提出的。
基本思想
快速排序使用 分治法(Divide and conquer)策略(即分而治之,各个击破)把一个序列(list)分为两个子序列(sub-lists)。其基本步骤如下:
从数列中挑出一个元素,称为 基准(pivot)。
重新排序数列,所有小于基准的元素,都移到基准的左边;所有大于基准的元素都移到基准的右边。这个分区结束之后,该基准处于数列的中间位置,称为 分区(partition)操作。
对基准左边和右边的两个子集,进行递归操作,即不断重复第一步和第二步。直到所有子集只剩下一个元素为止。
示例说明
下面我们举个示例进行排序说明,数列为[8,7,0,7,5,2,5,3,1]。
第一步: 基准值选取。基准值可以任意选取,便于理解,这里我们选择中间值5作为基准。
[8,7,0,7, 5, 2,5,3,1]
第二步: 进行分区操作。按照顺序将每个元素与基准进行比较,想成两个子集,大于5与小于5.
[0,2,5,3,1, 5, 8,7,7]
第三步,递归操作。对两个子集不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
[0,2, 5, 3,1] 5 [8, 7, 7][0,2,3,1, 5 ] 5 [7, 7, 8][0, 2, 3,1]5,5,7, 7, 8[0,1, 2, 3] 5, 5, 7, 7, 8[0,1,2,3,5,5,7,7,8]
Javascript的实现
讲述了快速排序的`基本思想,下面就让我们使用代码对其进行实现吧~
第一步: 定义函数quicksort,参数为一个数组。
var quicksort = function(arr){
};
第二步: 检查数组个数,小于等于1,则返回。
var quicksort = function(arr){ if(th <= 1){ return arr;
}
};
第三步: 进行基准选择,定义两个空数组进行左右两个子集元素的存放。
var quicksort = function(arr){ if(th <= 1){ return arr;
} var pivotIndex = r(th / 2); var pivot = ce(pivotIndex,1)[0]; var left = []; var right = []; for(var i = 0;i < th;i++){ if(arr[i] < pivot){
(arr[i]);
}else{
(arr[i]);
}
}
};
第四步: 递归操作。对两个子集不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
var quicksort = function(arr){ if(th <= 1){ return arr;
} var pivotIndex = r(th / 2); var pivot = ce(pivotIndex,1)[0]; var left = []; var right = []; for(var i = 0;i < th;i++){ if(arr[i] < pivot){
(arr[i]);
}else{
(arr[i]);
}
} return quicksort(left)at([pivot],quicksort(right));
};
第五步: quicksort函数的调用
这里可以直接定义一个数组,对函数进行调用即可。
var quicksort = function(arr){ if(th <= 1){ return arr;
} var pivotIndex = r(th / 2); var pivot = ce(pivotIndex,1)[0]; var left = []; var right = []; for(var i = 0;i < th;i++){ if(arr[i] < pivot){
(arr[i]);
}else{
(arr[i]);
}
} return quicksort(left)at([pivot],quicksort(right));
};var array = [8,7,0,7,5,2,5,3,1];
quicksort(array); //[0,1,2,3,5,5,7,7,8]
小结
快速排序的基本思想还是比较简单的,巧用了分治法策略 ~。
Javascript实现全选并赋值给文本框代码实例
用 Javascript 实现锚点(Anchor)间平滑跳转
JavaScript实现的div拖动效果实例代码
Javascript简单实现面向对象编程继承实例代码
JavaScript高级程序设计:本地对象Array
JavaScript中创建字典对象(dictionary)的实例
关jQuery弹出窗口简单实现代码-javascript编程
JavaScript如何实现JSON.stringify
网页程序设计之实用JavaScript代码段
Javascript实例教程如何使用HoTMetal
快速学习JavaScript免费教程资源
javascript解析json实例
Javascript 继承实现例子参考
JavaScript中push(),join() 函数实例详解
aircy,的过程,作者,3页,教程,js,javascript,分享
程序员学习JavaScript的7个理由
关于礼仪仪式的程序实例
关于ASP.NET使用JavaScript显示信息提示窗口实现原理及代码
JavaScript 函数式编程实践
JavaScript中Cookie操作实际案例
Javascript实现跨域的要点分析
如何实现JavaScript的DIV块来回滚动效果
JavaScript JS入门详细教程
有关javascript实现的多个层切换效果通用函数示例
关于JavaScript中isPrototypeOf函数作用和使用实例
JavaScript快速排序实现实例教程
javascript实现小球的自由移动代码
网络求职实现快速高效
php和javascript之间变量的传递实现代码
java与javascript之间json格式数据互转详解
JavaScript匿名函数实例分析
Javascript到PHP加密通讯的简单实现
如何使用JavaScript实现倒计时
javascript是如何实现命名空间效果
两种实现表单验证的javascript方法
Javascript到PHP加密通讯的简单实现方法
JavaScript实现网页刷新代码段
关于 response方法的javascript asp教程第六课
JavaScript简单实现放大镜效果代码
实现邮政金融业务的快速发展(精选多篇)