排序對比.jpg
排序分類.jpg
function bubblesort(array) }}
return array;
}
2.改進版設定乙個標誌性變數pos,用於記錄每趟排序中最後一次進行交換的位置,由於pos位置之後的記錄均已交換到位,故在進行下一趟排序是只要掃瞄到pos位置即可
function bubblesort(array)
}i = pos;
}return array;
}
3.加強版傳統氣泡排序中的每一趟排序操作只能找到乙個最大值或者最小值,我們考慮利用在每趟排序中進行正向和反向兩遍冒泡的方法一可以得到裡那個個最終值(最大及最小),從而使排序趟數至少減少一半
function bubblesort(array)
}--high;
}return array;
}
function selectionsort(array)
}let temp = array[i];
array[i] = array[minindex];
array[minindex] = temp;
}return array;
}
function insertionsort(array)
array[j + 1] = key;
}return array;
}
2.公升級版—基於二分法
function insertionsort(array) else
}for (let j = i - 1; j >= left; j--)
array[left] = key;
}return array;
}
function shellsort(array)
for (gap; gap > 0; parseint(gap / 5))
array[j + gap] = temp;}}
return array;
}
function mergesort(array)
const middle = parseint(array.length / 2);
const left = array.slice(0, middle);
const right = array.slice(middle);
return merge(test_run(left), test_run(right));
}function merge(left, right) else
}while (left.length)
while (right.length)
return newarray;
}
const quicksort = function (array)
const pivotindex = parseint(array.length / 2);
const pivot = number(array.splice(pivotindex, 1));
const left = ; const right = ;
for (let i = 0; i < array.length; i++) else
}return quicksort(left).concat([pivot], quicksort(right));
};
方法二其中 left = 0; right = array.length-1
桶排序示意圖.png
桶排序**.jpg
基數排序**.jpg
原文:
十大經典排序演算法
載自 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排...
十大經典排序演算法
不穩定排序種類為4種 快速排序 核心思想是partition操作 二分法分而治之 平均時間複雜度nlogn 希爾排序 高階版的插入排序,先把間隔較遠的子串行排序,最後間隔為1時,等同於插入排序 插入排序在序列有序時,時間複雜度常數級,所以先讓子串行總體有序,能有效降低時間複雜度 平均時間複雜度n 1...
十大經典排序演算法
常見經典排序 非線性時間比較類排序 通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o nlogn 因此稱為非線性時間比較類排序。線性時間非比較類排序 不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此稱為線性時間非比較類排序。時間複雜度 空間複雜度 穩...