JS数组排序技术摘要(冒泡、排序、快速、Hill等)
本文的示例总结了JS数组的排序技术:(1)冒泡排序
冒泡排序:函数(数组){
var i = 0,len = array.length,J,D;为(;我< len;i++){
对于(j = 0;j;<;j + +){
如果(数组{ } <数组{ }){
d =数组{ };数组{ } =数组{ };数组{ d = d;
}
}
}
返回的数组;
}
(2)JS使用排序进行排序。
SystemSort:函数(数组)
{ return array.sort(功能(A,B))
{返回a;b;});
}
快速排序
QuickSort:函数(数组)
{ / / var array = { 8,4,6,2,7,9,3,5,74,5 }; / / var array = { 0,1,2,444324,5,65,6,6,34,4,5,6,2,43,5,6,62,43,5,1,4,51,56,76,7,7,2,1,45,4,6,7 };
var i = 0;var j = array.length - 1;var排序=功能(i,j){
结束条件
如果(我= = J){ return };var关键字=数组{我};var =我的节拍;
记录开始位置的VaR tempj / / / / = j;记录的结束位置
当(j i){
J / << --------------向前搜索
如果(数组{ = });
别的{
数组{我} =数组{ } / /,我+ + ------------ > >向后搜索
当(j + + i){如果(数组{键})键{
数组{ } =数组{ };中断;
}
}
}
如果}中的第一个是最小数量的
如果(速度= =我){
排序(+ +我,tempj);返回;
}
最后一间房间
键数组{ } =键;
/ /排序(拍子,我)递归;
排序(J,tempj);}排序(i,j);
返回的数组;
}
(4)Hill排序
/ / jun.array.shellsort(Jun.array.df(10000));
ShellSort:函数(数组){
阵列= { 13,14,94,33,82,25,59,94,65,23,45,27,73,25,39,10 } /无功;
无功temparr = { 1750, 701, 301,132, 57, 23,10, 4, 1 };
(参见反向)/小步到wiki上的最佳数组
/ /无功temparr = { 1031612713, 217378076, 45806244,9651787, 2034035, 428481,90358, 19001, 4025,836, 182, 34,9, 1 }
对于大数组步骤选择
var i = 0;var temparrtemparrlength = temparr.length;var len = array.length;var = parseInt(Len len2个 / 2);
如果(temparr {我} > {继续} tempsort len2个);(temparr {我});
}
排序步骤
功能tempsort(临时){
步长统计 / / console.log用(临时)
var i = 0,j = 0,f,TEM,密钥;
无功templen = Len %温度> 0 parseInt(Len /温度)+ 1:Len /温度;
为(;;i;<温度;i + +){
循环列
为(j = 1; / * J < templen * /温度* j +我< len;j++){
每行中每个列的循环
瞬变电磁;
(同时(TEM =温度)> = 0){
为了找到。
如果(数组{键>键){
数组;
{ { };
}
}数组;
}
}
返回数组};
}
插入排序
InsertSort:函数(数组){
/ / var array = { 0,1,2,444324,5,65,6,6,34,4,5,6,2,43,5,6,62,43,5,1,4,51,56,76,7,7,2,1,45,4,6,7 };
var i = 1,J,临时密钥,len = array.length;
为了(;;我;我;+){
温度= i;键=数组{ };同时(- j - 1){
如果(数组{ } }键){数组{ + 1 } =数组{ } };}否则{中断;
}
}
数组{ + 1 } =键;
返回数组};
}
附录:js(排序)注释中数组(数组)的顺序
无功arrdemo =新的数组();
arrdemo { 0 } = 10;
arrdemo { 1 } = 50;
arrdemo { 2 } = 51;
arrdemo { 3 } = 100;
(arrdemo。排序); / /电话的排序方法,数组本身也会发生变化,影响原有的阵列
警报(arrdemo); / / 10100,50,51默认的排序方法是按字母顺序排列的,而不是我们认为它是由编号排序。
ArrDemo.sort(功能(A,B){ return a > B1:1 }); / /升阶
警报(arrdemo); / / 10,5051100
ArrDemo.sort(功能(A,B){ return < B1:1 }); / /从大到小的顺序
警报(arrdemo); / / 100,51,50,10
结论:
当1。数组调用排序方法,它会影响自身(而不是生成一个新数组)
的2.sort()方法是由字符默认的排序,所以当排序数字阵列,它是不能被认为是由数字编号排序。
三.若要更改默认排序行为(即按字符排序),可以指定排序规则函数(如本例所示)。
希望本文能对javascript程序设计有所帮助。