end;
折半插入排序(binary insertion sort):
for i:=2 to n do
begin
r[0]:=r[i];j:=i-1;s:=1;
while s<=j do
begin
m:=round((s+j)div 2);
if r[0] end;
for k:=i-1 downto j+1 do r[k+1]:=r[k];
r[j+1]:=r[0]
end;
隨機化快速排序:
function rd(l,h:integer):integer;
begin
randomize;
rd:=l+random(h-l+1)
end;
procedure qksort(l,r:integer);
vari,j,x:integer;
begin
i:=l;j:=r;x:=a[l];a[l]:=a[rd(l,r)];
while i begin
while (i=x) do dec(j);
a[i]:=a[j];
while (i a[j]:=a[i];
end;
a[i]:=x;
if l if i+1end;
選擇排序:
procedure selectsort(var r : filetype);
begin
for i := 1 to n - 1 do
begin
k := i;
for j := i + 1 to n do
begin
if r[j] < r[k] then k := j
end;
if k <> i then
begin
temp := r[i]; r[i] := r[k];
r[k] := temp;
end;
end;
end;
氣泡排序:
procedure bubblesort(var r : filetype);
begin
for i := 1 to n-1 do
begin
noswap := true;
for j := n - 1 downto 1 do
begin
if r[j+1]< r[j] then
begin
temp := r[j+1];
r[j+1 := r[j];
r[j] := temp;
noswap := false;
end;
end;
if noswap then return
endend;
如果按排序過程中依據的不同原則對內部排序(外部排序就是待排記錄不能完全存放在記憶體中,還有一部分在外存中)方法進行分類,則大致可分為插入排序、交換排序、選擇排序、歸併排序和計數排序等分類。如果按內部排序過程中所需的工作量來區分,則可分為三類:簡單的排序方法(o(n2));先進的排序方法(o(nlogn));基數排序(o(d·n))。
如果按待排序記錄的儲存方式也分為三種:順序表排序、鍊錶排序、位址排序。
1、插入排序
直接插入排序、2-路插入排序、希爾排序(縮小增量排序)
2、交換排序
氣泡排序、快速排序
3、選擇排序(不穩定)
簡單選擇排序、樹形選擇排序(錦標賽排序)、堆排序
4、歸併排序
5、基數排序(與前面完全不同的排序方法:借助多關鍵字排序的思想)
排序演算法總結
常見的排序方式有6種 簡單排序裡面的有 插入排序 選擇排序 氣泡排序,時間複雜度為o n 2 線性對數階的排序 歸併排序 merge sort 快速排序,堆排序,時間複雜度為o nlogn 在n 50的情況下,最好使用插入排序或者選擇排序,由於選擇排序移動次數比插入排序少,在資料量比較多的情況,推薦...
排序演算法總結
按平均時間將排序分為四類 1 平方階 o n2 排序 一般稱為簡單排序,例如直接插入 直接選擇和氣泡排序 2 線性對數階 o nlgn 排序 如快速 堆和歸併排序 3 o n1 階排序 是介於0和1之間的常數,即0 1,如希爾排序 4 線性階 o n 排序 如桶 箱和基數排序。各種排序方法比較 簡單...
排序演算法總結
熱2已有 2573 次閱讀 2009 09 01 13 23 填問卷贏好書華章讀者調研活動結果公布 一 選擇排序 1.基本思想 每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。2.排序過程 示例 初始關鍵字 49 38 65 97 ...