js-3种排序算法

面试经常会被问道的排序,话不多说。

冒泡排序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function maopao(arr) {
for(var i = 0,len = arr.length;i < len;i++) {
for(var j = 0;j < len-i-1;j++) {
if(arr[j] > arr[j+1]) {
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}

var arr = [23,43,12,44,1,4,2,13];

快速排序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function kuaipai(arr) {
if(arr.length < 1) {
return arr;
}

var middle = Math.floor(arr.length/2);
var middleNum = arr.splice(middle,1)[0];

var left=[ ],right=[ ];

for(var i = 0;i<arr.length;i++) {
if(arr[i] < middleNum) {
left.push(arr[i]);
}else {
right.push(arr[i]);
}
}

return kuaipai(left).concat([middleNum],kuaipai(right));
}

插入排序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function charu(arr) {
var j,key,len = arr.length;

for(var i = 0;i < len;i++) {
j = i;
key = arr[j];

while(--j > -1) {
if(arr[j] > key) {
arr[j+1] = arr[j];
}else {
break;
}
}
arr[j+1] = key;
}
return arr;
}
文章目录
  1. 1. 冒泡排序:
  2. 2. 快速排序:
  3. 3. 插入排序:
,