鸡尾酒排序 function cockTailSort(arr: number[]): void { let sorted: boolean; const len = arr.length; for (let i = 0, time = len >> 1; i < time; i++) { // 排序的次数 sorted = true; // 左到右 冒泡最大值 for (let j = i, end = len - i - 1; j < end; j++) { if (arr[j] > arr[j + 1]) { swap(arr, j, j + 1); sorted = false; } } console.log(i, "l->r",arr); if (sorted) { break; } // 右到左 冒泡小的 for (let j = len - i - 2 ; j > i; j--) { if (arr[j - 1] > arr[j]) { swap(arr, j - 1, j); sorted = false; } } if (sorted) { break; } console.log(i, "r->l",arr); } } function swap(arr: number[], pre: number, next: number): void { let value = arr[pre]; arr[pre] = arr[next]; arr[next] = value; } cockTailSort([3, 2, 5, 8, 3, 2])