js中的排序算法
元素两两对比,值较小的数往前面排
for (let i = 0; i < arr.length ; i++) { for (let j = 0; j < arr.length-1; j++) { //相邻元素对比 if (arr[j] > arr[j+1]) { let temp = arr[j+1] arr[j+1] = arr[j] arr[j] = temp } console.log(1111) } } console.log(arr) } bub([25, 45, 63, 1, 27, 1, 5, 9, 85, 42, 14])当然,我们还可以优化一下
for (let i = 0; i < arr.length-1 ; i++) { for (let j = 0; j < arr.length-1-i; j++) { //相邻元素对比 if (arr[j] > arr[j+1]) { let temp = arr[j+1] arr[j+1] = arr[j] arr[j] = temp } console.log(1111) } } console.log(arr) } bub([25, 45, 63, 1, 27, 1, 5, 9, 85, 42, 14])这样的话循环的次数会变少
遍历数组,选择最小的数放在前面
function sel(arr) { let minIndex,temp for (let i = 0; i < arr.length-1; i++) { minIndex = i for (let j = i+1; j < arr.length; j++) { if (arr[j]<arr[minIndex]) { minIndex = j } console.log(11111) } temp = arr[i] arr[i] = arr[minIndex] arr[minIndex] = temp } console.log(arr) } sel([25, 45, 63, 1, 27, 1, 5, 9, 85, 42, 14])当然了,他的执行次数也是55次,是一直非常稳定的算法之一,因为时间复杂度固定,所以进行排序的数据越小越好
反复把数据往后挪,给需要插入的数据空出位置
function int(arr) { let preIndex,current for (let i = 1; i < arr.length; i++) { preIndex = i - 1 current = arr[i] while (preIndex >= 0 && arr[preIndex] > current) { arr[preIndex + 1] = arr[preIndex] preIndex-- } arr[preIndex + 1] = current console.log(1111) //代表执行次数 } console.log(arr) } int([25, 45, 63, 1, 27, 1, 5, 9, 85, 42, 14])