首页 > IT职业 > IT职场 > 常见排序算法之JavaScript实现
作者:河马 链接:https://zhuanlan.zhihu.com/p/28130533
1.冒泡排序
基本思路:
1.依次比较相邻的两个数,如果第一个比第二个小,不变。如果第一个比第二个大,调换顺序。一轮下来,最后一个是最大的数。
2.对除了最后一个之外的数重复第一步,直到只剩一个数。
图形展示:
代码:
function bubbleSort(myArray){
var len = myArray.length;
var i;
var j;
var stop;
for (i = 0; i myArray[j + 1]){
swap(myArray, j, j + 1);
}
}
}
return myArray;
}
function swap(myArray, p1, p2){
var temp = myArray[p1];
myArray[p1] = myArray[p2];
myArray[p2] = temp;
} 2.选择排序
基本思路:
1.找出最小的数,和第一个交换位置。
2.在剩下的数中,找出最二小的数,放在第二个。
3.依次类推,排出顺序。
图形展示:
代码:
function selectionSort(myArray){
var len = myArray.length,
min;
for (i = 0; i 3.插入排序
基本思路:
1.把数组分为[已排序]和[未排序]两部分,第一个数为[已排序],其余为[未排序]。
2.从[未排序]抽出第一个数,和[已排序]部分比较,插入到合适的位置。
图形展示:
代码:
function insertionSort(myArray) {
var len = myArray.length, // 数组的长度
value, // 当前比较的值
i, // 未排序部分的当前位置
j; // 已排序部分的当前位置
for (i=0; i -1 && myArray[j] > value; j--) {
myArray[j+1] = myArray[j];
}
myArray[j+1] = value;
}
return myArray;
} 4.合并排序(分而治之)
基本思路:
1.不断将数组对半分,直到每个数组只有一个。
2.将分出来的部分重新合并。
3.合并的时候按顺序排列。
图片展示:

代码:
// 被拆分的数组重新合并
function merge(left, right) {
var result = [],
left_index = 0,
right_index = 0;
// 将两个数组合并
// 合并的时候按从小到大的顺序
while (left_index 5.快速排序
基本思路:
1.以一个数为基准(中间的数),比基准小的放到左边,比基准大的放到右边。
2.再按此方法对这两部分数据分别进行快速排序(递归进行)。
3.不能再分后退出递归,并重新将数组合并。
图形展示:
代码:
var quickSort = function(myArray) {
// 当被分的数组只剩一个时,退出递归
if (myArray.length 来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4362/viewspace-2808060/ ,如需转载,请注明出处,否则将追究法律责任。