js中数字排序除了sort的方法
除了系统自带的sort()数组排序方法,我们还可以自己编写函数进行数组排序;
比如下题:
var arr=[3,4,5,6,7]
首先我们可以选择冒泡法进行如下比较(以下数字代表索引)
// 0-1,1-2,2-3,3-4
// 0-1,1-2,2-3
// 0-1,1-2
// 0-1
for(var i=0;i<arr.length;i++){
//第一个比较了四次 第二个比较了三次
for(var j=0;j<arr.length-i;j++){
//判断数字n和n+1的大小
if(arr[j]>arr[j+1]){
//判断完成后,数字进行交换
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr)
第二种方法,我们使用选择法;比较思路如下(以下数字代表索引)
// 0-1,0-2,0-3,0-4 //拿第一个数字和其他数字依次比较,小的放在第一个
// 1-2,1-3,1-4
// 2-3,2-4
// 3-4
for(var i=0;i<arr.length;i++){
// 为了能不断的使用第一位和后面的作比较,在能拿到第一个数据的时候,存到一个ls变量中
// 将来使用这个ls变量作比较,就不影响真正的第一位的数据了,变量index为此时的索引
var ls=arr[i];
var index=i;
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
ls=arr[j] //循环进行比较,判断出最小的存放在ls中
index=j //此时最小的数字的索引为j
}
}
//比较完成后,交换数组中的数据
arr[index]=arr[i];
arr[i]=ls;
}
console.log(arr)