冒泡排序以及其改进
2019-06-04 本文已影响0人
海山城
let array = [8, 3, 0, 32, 99, 1, 888, 23, 6, 5, 999, 1, 342, 3, 6, 23, 55]
function bubbleSort(array) {
for (let i = 0; i < array.length - 1; i++) {
for (let j = 0; j < array.length - 1 - i; j++){
if (array[j] > array[j + 1]) {
let tmp = array[j + 1]
array[j + 1] = array[j]
array[j] = tmp
}
}
}
console.log("array", array)
}
// 改进冒泡排序1
function bubbleSortNice(array) {
let pos = 0;
let length = array.length - 1
for (let i = 0; i < array.length - 1; i++) {
for (let j = 0; j < length; j++){
if (array[j] > array[j + 1]) {
let tmp = array[j + 1]
array[j + 1] = array[j]
array[j] = tmp
pos = j
}
}
length = pos
}
console.log("array", array)
}
// 改进冒泡排序2
function bubbleSortNice2(arr) {
let i = arr.length - 1;
while (i > 0) {
let pos = 0;
for (let j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
pos = j;
const temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
i = pos;
}
console.log(arr);
}
console.time("bubbleSort")
bubbleSort(array)
console.timeEnd("bubbleSort")
console.time("bubbleSortNice")
bubbleSortNice(array)
console.timeEnd("bubbleSortNice")
console.time("bubbleSortNice2")
bubbleSortNice2(array)
console.timeEnd("bubbleSortNice2")
运行时间