本文主要介绍了关于JavaScript数组排序的六种常用算法,通过示例代码进行了详细介绍,对大家学习或使用JavaScript数组有一定的参考价值。有需要的话一起学吧。
前言
如果你很着急,就选前面两个,看后面一个就行了。
在开发中,数组排序的需求非常频繁。本文将介绍几种常见的排序思路。
一、希尔排序(性能最好)
While(arr[n] arr[n-interval] n 0)如果要按降序排列。
//希尔排序算法
函数xier(arr){
var interval=parse int(arr . length/2);//数据包间隔设置
while(间隔0){
for(var I=0;长度;i ){
var n=I;
while(arr[n]arr[n-interval]n 0){
var temp=arr[n];
arr[n]=arr[n -间隔];
arr[n间隔]=temp;
n=n -区间;
}
}
interval=parseInt(区间/2);
}
返回arr
}
//数组
var arr=[10,20,40,60,60,0,30]
//打印排序后的数组
console.log(xier(arr))//[0,10,20,30,40,60,60]
二、sort排序(普通数组 / 数组嵌套对象)
一堆数组排序
//数组
var arr=[10,20,40,60,60,0,30]
//排序方法
arr.sort(函数(a,b){
/*
*返回b-a;—降序排序
*返回a-b;—升序
*/
返回a-b;
})//如果括号里没有写回调函数,默认按字母升序排列。
//打印排序后的数组
console.log(arr)//[0,10,20,30,40,60,60]
对象排序(对象数组)
//对象数组排序
var arr=[
{姓名:' syy ',年龄:0},
{姓名:' wxy ',年龄:18},
{姓名:' slj ',年龄:8},
{姓名:' wj ',年龄:20}
];
//排序方法
function Compare(property){//property:根据什么属性?
返回函数(a,b){
var value 1=a[属性];
var value 2=b[属性];
/*
*值2 -值1;3354降序排列
*值1 -值2;3354升序
*/
返回值1 -值2;//按升序排序
}
}
//打印排序后的数组
console . log(arr . sort(compare(' age '))
/*
0:{姓名:' syy ',年龄:0}
1:{姓名:' slj ',年龄:8}
2:{姓名:' wxy ',年龄:18}
3:{姓名:' wj ',年龄:20}
*/
三、桶排序
特点:简单,但非常浪费内存,几乎不用。
桶中出现的所有数组元素都用1标记,然后依次打印桶数组中用1标记的元素。
//数组
var arr=[]
//标记每个数组项(1)
for(设I=0;长度;i ) {
let key=arr[i]
arr[key]=1
}
//遍历每个打印项目。
for(让j在arr中){
调试器
console.log(j)
}
四、冒泡排序
表现:一般(每一项都需要比较)。
找出每次行程的最大值。
//数组
var arr=[10,20,40,60,60,0,30]
/*
*比较的总数是arr.length-1。
*每次比较的次数为arr.length-1次。
*依次递减
*/
可变温度;//交换变量ID
for的两层分别表示当前项和第二项。
for(设I=0;I arr . length-1;i ) {
for(设j=0;j arr . length-1;j ) {
//如果当前项大于第二项(后一项)则交换
if(arr[j] arr[j 1]) {
temp=arr[j]
arr[j]=arr[j 1];
arr[j 1]=temp;
}
}
}
//打印排序后的数组
console.log(arr)//[0,10,20,30,40,60,60]
五、选择排序
表现:一般(每一项都需要比较)。
假设某个位置的值是最小值,类似于冒泡排序。
//数组
var arr=[10,20,40,60,60,0,30]
可变温度;//交换变量ID
for的两层分别表示当前项和第二项。
for(设I=0;I arr . length-1;i ) {
for(设j=I ^ 1;j排列长度;j ) {
//假设第二项是最小值(如果是,交换/否则,继续比较)
if(arr[i] arr[j]) {
temp=arr[I];
arr[I]=arr[j];
arr[j]=temp;
}
}
}
//打印排序后的数组
console.log(arr)//[0,10,20,30,40,60,60]
六、插入排序
//数组
var arr=[10,20,40,60,60,0,30]
//排序算法
for(var I=0;长度;i ) {
var n=I;
while(arr[n] arr[n 1] n=0) {
var temp=arr[n];
arr[n]=arr[n 1];
arr[n 1]=temp;
n-;
}
}
//打印排序后的数组
console.log(arr)//[0,10,20,30,40,60,60]
总结
本文关于JavaScript数组排序的六种常用算法的总结到此为止。更多JavaScript数组排序的相关常用算法,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。