1.冒泡排序
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。
即首先比较第1个和第2个数,将小数放前,大数放后。
然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。
重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
var a = [10, 2, 1, 4, 3, 5, 7, 6, 9, 8];
for (var i = 0; i < a.length; i++) {
var temp = null;
for (var k = 0; k < a.length - 1; k++) {
if (a[k] < a[k + 1]) {
temp = a[k + 1];
a[k + 1] = a[k];
a[k] = temp;
}
}
}
var a2 = [10, 2, 1, 4, 3, 5, 7, 6, 9, 8];
var a1 = a2.sort(function (n1, n2) {
return n2 - n1;
});
console.log(a1);
2.选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
console.time();
function selectsort(a) {
var minindex = 0;
var temp = null;
for (var i = 0; i < a.length; i++) {
minindex = i;//默认一个最小的索引 拿最小索引的值 去和后边的值对比 如果你小 minindex=最小值的索引
for (var k = i + 1; k < a.length; k++) {
if (a[k] < a[minindex]) {
minindex = k;
}
}
temp = a[i];
a[i] = a[minindex];
a[minindex] = temp;
}
console.log(a);
}
selectsort(arr);
console.timeEnd();
- 快速排序
var res = [1, 18, 16, 0, 4, 2, 7, 5];
function qucksort(r) {
if (r.length < 2) {
return r;
}
var centerindex = parseInt(r.length / 2);//值可能有小数点
var num = r.splice(centerindex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < r.length; i++) {
if (r[i] < num) {
//左边加
left.push(r[i]);
}
else {
//右边加
right.push(r[i]);
}
}
return qucksort(left).concat(num).concat(qucksort(right));
}
console.log(qucksort(res));