概述
第一种是通过两个for循环,每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置,这个方法就是比较次数太多了,效率比价低。
我只是传入了一个10位数的数组,如果是上万或者更大的数据,不知道您的电脑会不会蓝屏了,嘿嘿,你可以试试哦!
1
2
3
4
5
6
7
8
9
10
11
12
13
|
var
Sort=
function
(arr){
for
(
var
i=0;i<arr.length-1;i++){
for
(
var
j=i+1;j<arr.length;j++){
if
(arr[i]>arr[j]){
/*如果前面的数据比后面的大就交换位置*/
var
list=arr[i];
arr[i]=arr[j];
arr[j]=list;
}
}
}
return
arr;
}
Sort([10,10,1,2,4,6,7,89,7,4])<br>输出结果
|
下面我们来说说第二种方法,这方法是我浏览阮一峰老师日志看到的,这种方法的效率会高很多,具体选哪种,看情况吧!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
var
quickSort =
function
(arr) {
if
(arr.length <= 1) {
//如果数组长度小于等于1无需判断直接返回即可
return
arr;
}
var
pivotIndex = Math.floor(arr.length / 2);
//取基准点
var
pivot = arr.splice(pivotIndex, 1)[0];
//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数
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]);
//比基准点大的放在右边数组
}
}
//递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1;
return
quickSort(left).concat([pivot], quickSort(right));
};<br>使用的时候,直接调用quickSort()就行了。
|
要是这些注释你看了还不理解的话,那么,可以去看看阮一峰老师的日志,链接http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html
转载于:https://www.cnblogs.com/xfcao/p/10004344.html
最后
以上就是舒心电灯胆为你收集整理的js实现快速排序的方法的全部内容,希望文章能够帮你解决js实现快速排序的方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复