本文共享了js实现的常用
排序算法。具体内容如下
1。冒泡排序
VaR冒泡=
功能(ARR){
var标志=真;
VaR len = arr.length;
对于(var i = 0;i < 1;i +){
标志=真;
对于(var j=0;j=1;i;j + +){
如果(ARR { J } > ARR { j + 1 }){
VaR
温度= ARR { J + 1 };
{ 1 } = J + ARR ARR {,};
ARR { } =温度{J}.;
标志=假;
}
}
如果(标志){
打破;
}
}
};
2。选择排序
VaR选择排序=功能(ARR){
VaR最小;
对于(var i = 0;i < arr.length-1;i++){
min = i;
对于(var j = i + 1;J < arr.length;j++){
如果(ARR {民} { } { > ARR J)
min = j;
}
}
如果(i)!= min){
互换(ARR,我,min);
}
}
};
功能互换(ARR,指数,指数2){
VaR的温度= 1 ARR { };
ARR { } = { }度指数比1;
ARR { } =温度指数;
};
三.插入排序
var insertSort =功能(ARR){
VaR len = arr.length,关键;
对于(var i = 1;i < i;i + +){
var j = i;
关键= { }度{J}.;
当(- j - 1){
如果(ARR { J } >键){
{ 1 } = J + ARR ARR {,};
{人}
打破;
}
}
{ 1 } = ARR J +关键;
}
};
4。Hill排序
var shell排序=功能(ARR){
var差距= { 5, 3, 1 };
对于(var g = 0;g<gaps.length;+ + G){
对于(var i =空白{绿};i < arr.length;+ +我){
VaR温度= ARR {我};
对于(var j =我;J差距{绿} { J—>温度> ARR =空白{绿} };j =空白{绿}){
ARR { } = { J J ARR差距{绿} };
}
ARR { } =温度{J}.;
}
}
};
5。归并排序
function mergeSort(ARR){
如果(arr.length<2){
返回;
}
var
步骤= 1;
左,右;
而(步< arr.length){
左= 0;
右步;
而(右+步< = arr.length){
mergearrays(ARR,左,右,左+右+一步一步);
左=右+步;
右=左+步;
}
如果(对<< arr.length){
mergearrays(ARR,左,右,左+步,arr.length);
}
步骤2;
}
}
功能mergearrays(ARR,startleft,stopleft,startright,stopright){
无功rightarr =新的数组(stopright - startright + 1);
无功leftarr =新的数组(stopleft - startleft + 1);
K = startright;
对于(var i = 0;i <(rightarr.length - 1);+ +我){
我rightarr { } = { }度K;
++;
}
K = startleft;
For (VaR I = 0; I < (leftArr.length - 1); ++i) {
我leftarr { } = { }度K;
++;
}
rightarr { 1 } = rightarr.length无限; / /价值
leftarr { 1 } = leftarr.length无限; / /价值
var m=0;
var = 0;
对于(VAR K = startleft;K<stopright;+ + K){
如果(leftarr {米} rightarr {N}){
ARR { } = { } leftarr M K;
米+;
}
{其他
ARR { } = K rightarr { };
氮+;
}
}
}
6。快速排序
无功快速排序=功能(ARR,左,右){
变量i,j,t,枢轴;
如果(左=右){
返回;
}
支点= ARR {左};
我=离开;
J =右;
虽然(我!= j){
而(ARR { }枢纽< > = J J我){
J;
}
而(ARR {我}我<< =支点J){
++;
}
如果(i <){
T = ARR {我};
ARR {我} = { }度{J}.;
ARR { } = T J;
}
}
ARR {左} = { }度{J}.;
ARR { } =支点{J}.;
QuickSort(ARR,左,我- 1);
QuickSort(ARR,我+ 1,右);
}
总结:算法效率比较:
以上是本文的全部内容,希望能对您有所帮助,希望大家多多
支持。