feat: 添加鸡尾酒排序
This commit is contained in:
parent
f3fe3b0480
commit
167bb9f481
@ -1,10 +1,15 @@
|
||||
import {generateRandomArray, measureTime} from "../util/index.mjs"
|
||||
import { bubbleSort, bubbleSort2, bubbleSort3 } from "./bubble-sort.mjs"
|
||||
import { bubbleSort, bubbleSort2, bubbleSort3, cocktailSort } from "./bubble-sort.mjs"
|
||||
|
||||
|
||||
const arr = generateRandomArray(10000)
|
||||
const arr2 = generateRandomArray(10000)
|
||||
const arr3 = generateRandomArray(10000)
|
||||
measureTime(bubbleSort, arr)
|
||||
measureTime(bubbleSort2, arr2)
|
||||
measureTime(bubbleSort3, arr3)
|
||||
// const arr3 = generateRandomArray(10000)
|
||||
// measureTime(bubbleSort, arr)
|
||||
// measureTime(bubbleSort2, arr2)
|
||||
// measureTime(bubbleSort3, arr3)
|
||||
|
||||
|
||||
// 鸡尾酒排序测试
|
||||
measureTime(cocktailSort, arr)
|
||||
measureTime(bubbleSort, arr2)
|
@ -46,3 +46,27 @@ export function bubbleSort3(arr) {
|
||||
k = swapPos // 把最后一次交换的位置给k,之后的排序支队1 - n-k的元素进行比较,因为之后的元素都是有序的
|
||||
}
|
||||
}
|
||||
|
||||
// 鸡尾酒排序(冒泡排序变形)
|
||||
export function cocktailSort(arr) {
|
||||
let left = 0, right = arr.length - 1, index;
|
||||
while(left < right) {
|
||||
// 大的排在后面
|
||||
for (let i = left;i < right;i++) {
|
||||
if (arr[i] > arr[i+1]) {
|
||||
swap(arr, i, i+1)
|
||||
index = i
|
||||
}
|
||||
}
|
||||
// 第一轮排完之后index右侧的数字都是有序的,只需从index开始排就行(重点)
|
||||
right = index
|
||||
// 小的排前面
|
||||
for (let i = right;i > left;i--) {
|
||||
if (arr[i] < arr[i-1]) {
|
||||
swap(arr, i, i-1)
|
||||
index = i
|
||||
}
|
||||
}
|
||||
left = index
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user