排序
一、原理
/* 5,4,3,2,1 从小到大 第一趟排序结果 4,3,2,1,5 第1次 4,5,3,2,1 第2次 4,3,5,2,1 第3次 4,3,2,5,1 第4次 4,3,2,1,5 第二趟排序 3,2,1,4,5 第1次 3,4,2,1,5 第2次 3,2,4,1,5 第3次 3,2,1,4,5 //4和5不需要再比较 第三趟排序 2,1,3,4,5 第1次 2,3,1,4,5 第2次 2,1,3,4,5 第三趟排序 1,2,3,4,5 第1次 1,2,3,4,5 */
二、排序类型
1、冒泡排序
①数组冒泡排序
var array= [5, 4, 3, 2, 1]; for (var i = 0; i < array.length-1; i++){ //外层是给你循环多少次 for (var j = 0; j < array.length - 1; j++){ //内层循环 if(array[j]>array[j+1]){ //相邻的两个值进行交换,交换时写中间变量temp var temp=array[j]; //定义temp是最大值array[j] array[j] = array[j + 1]; //把后一位赋值给前一位,进行交换 array[j + 1] = temp; //把后一位赋给前一位,进行交换 //console.log(array); } //console.log(array) } console.log('========='+array) } //console.log(array)
②数组冒泡排序
var arr = [ ["北京", 80], ["上海", 50], ["福州", 10], ["广州", 50], ["成都", 70], ["西安", 100] ]; var t; for(var i = 0; i < arr.length; i++) { for(var j = 0; j < arr.length - 1; j++) { if(arr[j][1] > arr[j + 1][1]) { t = arr[j][1]; arr[j][1] = arr[j + 1][1]; arr[j + 1][1] = t; } } } console.log(arr); //["福州",10],["上海",50],["广州",50],["成都",70],["北京",80],["西安",100]
③字符串冒泡排序
//把字符串转成数组,再排序 var text = "5,4,3,2,1"; var array = text.split(","); for (var i = 0; i < array.length-1; i++){ //外层循环是给你循环多少次 for (var j = 0; j < array.length - 1; j++){ //内层循环 if(array[j]>array[j+1]){ //相邻的两个值进行交换,交换时写中间变量temp var temp=array[j]; //定义temp是最大值array[j] array[j] = array[j + 1]; //把后一位赋值给前一位,进行交换 array[j + 1] = temp; //把后一位赋给前一位,进行交换 // console.log(array); } console.log(array) } console.log('========='+array) } // console.log(array)
2、short排序
①数组
//排序函数 /* function sortNumber(a, b) { return a - b } var arr = [10, 20, 1, 2]; document.write(arr.sort()+'</br>');//1,10,2,20 按字母顺序进行排序 one ,ten ,two ,twenty document.write(arr.sort(sortNumber))//1,2,10,20 */ /* * 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。 若 a 大于 b,则返回一个大于 0 的值。 */ var arr = [10, 20, 1, 2]; arr.sort(function(a, b) { if(a < b) { return -1; } if(a > b) { return 1; } return 0; }) console.log(arr); //[1, 2, 10, 20]
②二维数组
var arr = [ ["北京", 80], ["上海", 50], ["福州", 10], ["广州", 50], ["成都", 70], ["西安", 100], ]; arr.sort(function(a, b) { if(a[1] < b[1]) { return -1; } if(a[1] > b[1]) { return 1; } return 0; }) console.log(arr); //["福州",10],["上海",50],["广州",50],["成都",70],["北京",80],["西安",100]