常用排序算法

排序算法的学习和记录

更新中。。。

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function bubble = (arr) => {
let n = arr.length,i,j,tmp,flag = true;
let result = arr.slice(0);
for(i = 0;i<n && flag;i++){
flag = false;
for(j=0;j<n-i;j++){
if(result[j]>result[j+1]){
tmp = result[j];
result[j] = result[j+1];
result[j+1] = tmp;
flag=true;
}
}
}
return result;
}

选择排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function Selector = (arr) => {
let n = arr.length,i,j,min,tmp;
let result = arr.slice(0);
for(i=0;i<n;i++){
min = i;
for(j=i+1;j<n;j++){
if(result[j] < result[min]){
min = j;
}
}
if(min !=i){
tmp = result[i];
result[i] = result[min];
result[min] = tmp;
}
}
return result;
}

计数排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const CountingSort = (arr)=>{
let n = arr.length,i,tmp = [];
for(i=0;i<n;i++){
var a = arr[i];
var b = tmp[a];
tmp[a] = b?++b:1;
}
let result = [];
for(i=0;i<tmp.length;i++){
while(tmp[i]>0){
result.push(i);
tmp[i]--;
}
}
return result;
}

桶排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 堆排序
const BucketSort = (arr) => {
let n = arr.length,i,j,tmp,result,D=[];
for(i = 0;i<n;i++){
tmp = arr[i];
j = Math.floor(tmp/10);
if(!D[j]){
D[j] = [];
}
D[j].push(tmp);
}
result = [];
for(i=0;i<D.length;i++){
if(!D[i]){
continue;
}
result.push(...CountingSort(D[i]))
}
return result;
}

本文标题:常用排序算法

文章作者:kinboy

发布时间:2018年11月08日 - 17:53:24

最后更新:2019年07月15日 - 18:05:10

原始链接:http://kinboyw.github.io/2018/11/08/常用排序算法/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ Passage Ending ------