冒泡排序
原理:循环一轮,将当前数据和下一个数据进行比较,选出每次循环最大或最小值;
let arr = [1,3,2,4,7,6,8,5]; //冒泡排序 for( let i = 0; i < arr.length; i++){ for( let j = 0; j < arr.length-i; j++){ if( arr[j] < arr[j+1]){ let tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } }选择排序
原理:通过比较将最小或最大的数放在当前循环的第一个位置上,直到所有的数成为有序数列,最后一个数无需排序,所以循环.length-1就可以了
let arr = [1,2,5,8,3];
for( let i = 0; i < arr.length-1; i++){ for( let j = i+1; j < arr.length; j++){ if( arr[i] < arr[j]){ let tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } console.log(arr);反转
原理:将数组的前后对应的部分进行一个数据的交换,当数组长度为奇数时中间的数不参与交换
let arr = [3,7,85,3,9,4,0];
let length = parseInt(arr.length/2); for(let i = 0; i < length; i++){ let temp = arr[i]; arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = temp; } console.log(arr);