JS--排序之快排和归并
目录 JS排序算法之快排和归并 快速排序 归并排序 JS排序算法之快排和归并 快速排序 原理: 选择一个key(一般是第一个元素), 将数组划分为两个区域. 左边全部区域小于等于key, 右边全部大于key. 然后在通过这种方法将每个区域划分为两个区域. 整个过程可以递归实现,以此实现整个数据有序 时间复杂度: O(n*log(n)) 最坏时间复杂度: O(n^2) 最坏情况: 原数组是升序(降序), 需要排成降序(升序) 不稳定的排序 特性: 数组分块,且左边区域小于右边(升序) 不稳定原因: 元素交换是跨元素直接交换, 相邻相同元素可能发生位置交换 性能: 最好的的快速排序方法 示例过程: function quickSort(ary) { let n = ary.length; function sort(ary, start, end) { if(end <= start) return; let i = start, j = end, key = ary[start]; // 设置第一个元素为key while(true) { // 从左向右找到大于key的元素位置(大于key循环停止, i就是该元素位置) while(ary[++i] < key) { // 到达末尾退出循环 if(i === end) break; } // 从右向左找到小于key的元素位置