js中的排序算法

tech2024-03-18  62

js中的排序算法

1.冒泡排序

元素两两对比,值较小的数往前面排

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])

这样的话循环的次数会变少

2.选择排序

遍历数组,选择最小的数放在前面

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次,是一直非常稳定的算法之一,因为时间复杂度固定,所以进行排序的数据越小越好

3.插入排序

反复把数据往后挪,给需要插入的数据空出位置

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])

最新回复(0)