冒泡排序
function bubbleSort(arr) { for(let i = 0; i < arr.length-1; i++) { for(let j = 0; j < arr.length-i-1; j++) { if(arr[j] > arr[j+1]) { let temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } return arr; }
直接插入排序
function insertSort(arr) { for(let i = 1; i < arr.length; i++) { for(let j = i ; j > -1; j--) { if(arr[j] < arr[j-1]) { let temp = arr[j-1]; arr[j-1] = arr[j]; arr[j] = temp; } } } return arr; }
折半插入排序
快速排序
function quickSort(arr) { if(arr.length < 2) { return arr; } else { let leftIndex = 0; let rightIndex = arr.length - 1; let index = { value: arr[0], pos: 0 }; while(leftIndex < rightIndex) { if(arr[leftIndex] > arr[rightIndex]) { let temp = arr[leftIndex]; arr[leftIndex] = arr[rightIndex]; arr[rightIndex] = temp; if(arr[leftIndex] === index.value) { rightIndex--; index.pos = leftIndex; } else { leftIndex++; index.pos = rightIndex; } } else { if(arr[leftIndex] === index.value) { rightIndex--; } else { leftIndex++; } } } // console.log('dddd', arr ,' ',arr.slice(0, index.pos),' ',index.value,' ',arr.slice(index.pos + 1, arr.length)) return quickSort(arr.slice(0, index.pos)).concat(index.value).concat(quickSort(arr.slice(index.pos + 1, arr.length))); } }
简单选择排序
希尔排序
锦标赛排序
堆排序
https://segmentfault.com/a/1190000015487916?utm_source=tag-newest
归并排序
性能比较