图自网络
学习更多:http
冒泡排序:
// 外层循环控制趟数 arr.length-1趟
for(var i = 0; i < arr.length - 1; i++){
// 内层控制这一趟比较的次数
for(var j = 0; j < arr.length-1-i; j++){
if(arr[j] > arr[j+1]) {
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
选择排序:
// 外层循环控制趟数 length-1趟
for(var i = 0; i < arr.length - 1; i ++){
// 内层循环开始之前假定当前是最小值,记录索引
var minIndex = i;
//内层从i开始,到length-1结束
for(var j = i+1; j < arr.length; j++){
if(arr[minIndex] > arr[j]){
minIndex = j;
}
}
// minIndex这个时候存的就是当前趟的最小值的下标
var temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
插入排序:
var preIndex;
var current;
for (var i = 0; i < arr.length-1; i++) {
preIndex = i;
current = arr[i+1];
while (preIndex >= 0 && arr[preIndex] > current) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
利用sort():
var arr = [1,5,11,8,56,37];
var arr1 = arr.sort();
// sort()会循环的取数组里的每一个元素
console.log(arr1);//[1, 11, 37, 5, 56, 8]
// function里返回值如果大于0,就会交换顺序,从小到大排序
var arr2 = arr.sort(function (max,min) { return max-min; });
console.log(arr2);//[1, 5, 8, 11, 37, 56]
//同理,function里返回值如果小于0,从大到小排序
var arr3 = arr.sort(function (max,min) { return min-max; });
console.log(arr3);//[56, 37, 11, 8, 5, 1]