所有排序演算法

2023-01-13 07:24:01 字數 1813 閱讀 1477

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 ...