四 排序演算法

2021-04-09 03:15:19 字數 1951 閱讀 6091

1.快速排序:

procedure qsort(l,r:integer);

var i,j,mid:integer;

begin

i:=l;j:=r; mid:=a[(l+r) div 2];

repeat

while a[i]mid do dec(j);

if i<=j then begin  

swap(a[i],a[j]);

inc(i);dec(j);  

end;

until i>j;

if lb.插入排序:

思路:當前a[1]..a[i-1]已排好序了,現要插入a[i]使a[1]..a[i]有序。

procedure insert_sort;

var i,j:integer;

begin

for i:=2 to n do begin

a[0]:=a[i];

j:=i-1;

while a[0]c.選擇排序:

procedure sort;

var i,j,k:integer;

begin

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j] then swap(a[i],a[j]);

end;

d. 氣泡排序

procedure bubble_sort;

var i,j,k:integer;

begin

for i:=1 to n-1 do

for j:=n downto i+1 do

if a[j]e.堆排序:

procedure sift(i,m:integer);

var k:integer;

begin

a[0]:=a[i]; k:=2*i;

while k<=m do begin

if (kprocedure heapsort;

varj:integer;

begin

for j:=n div 2 downto 1 do sift(j,n);

for j:=n downto 2 do begin

swap(a[1],a[j]);

sift(1,j-1);

end;

end;

f. 歸併排序

procedure merge(var a:listtype; p,q,r:integer);

var i,j,t:integer;

tmp:listtype;

begin

t:=p;i:=p;j:=q+1;

while (t<=r) do begin

if (i<=q) and ((j>r) or (a[i]<=a[j]))

then begin

tmp[t]:=a[i]; inc(i);

endelse begin

tmp[t]:=a[j];inc(j);

end;

inc(t);

end;

for i:=p to r do a[i]:=tmp[i];

end;

procedure merge_sort(var a:listtype; p,r: integer);

var  q:integer;

begin

if p<>r then begin

q:=(p+r-1) div 2;

merge_sort (a,p,q);

merge_sort (a,q+1,r);

merge (a,p,q,r);

end;

end;

begin

merge_sort(a,1,n);

end.

g.基數排序

思想:對每個元素按從低位到高位對每一位進行一次排序

四 排序演算法 快速排序

快速排序的思想 選擇陣列中的一個數作為中軸線,然後以這個中軸線為中心,大於中軸線的資料放到右邊,小於中軸線的資料放到左邊,然後每次比較完後再變中軸線的位置,不斷比較下去 include using namespace std template void quick sort t arry,int l...

C C 演算法例項(四) 排序演算法

a.快速排序 procedure qsort l,r integer var i,j,mid integer begin i l j r mid a l r div 2 repeat while a i 在左半部分尋找比中間數大的數 while a j mid do dec j if i j the...

演算法 排序1 排序

題目 給定n個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 輸入第一行給出正整數n 10 5 隨後一行給出n個 長整型範圍內的 整數,其間以空格分隔。在一行中輸出從小到大排序後的結果,數字間以1個空格分隔,行末不得...

演算法1 排序

氣泡排序 氣泡排序,比較相鄰的元素由小到大排序 function bubblesort arr return arr view code 快速排序 以基數為標準,最右開始查小於基數停止,最左邊開始查大於基數停止,互換位置停止的位置 left right表示基數左為小於基數,基數右大於基數的 拆分基數...

8 排序演算法

1 氣泡排序 bubble sort 演算法描述 比較相鄰的元素。如果第一個比第二個大,就交換它們兩個 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數 針對所有的元素重複以上的步驟,除了最後一個 重複步驟1 3,直到排序完成。實現 public clas...