C語言排序演算法

2021-10-13 15:29:22 字數 1747 閱讀 9640

void

bubblesort

(int a,

int n)}if

(flag==0)

//沒發生交換,直接跳出迴圈

break

;else

flag=0;

}}

void

selectsort

(int a,

int n)

}}

void

insertsort

(int a,

int n)

}

void

quicksort

(int a,

int start,

int end)

//最後所有的坑都要填上

a[low]

=key;

quicksort

(a,start,low-1)

;quicksort

(a,low+

1,end)

;}

void

shellsort

(int a,

int n)

a[j+d]

=x;//儲存資料

} d/=2

;//縮小增量

}}

void

heapadjust

(int a,

int s,

int n)

//構成堆

if(a[s]

)//比較s與j為序號的資料

else

//比較左右孩子均大則堆未破壞,不再需要調整

break

;//退出迴圈}}

void

heapsort

(int a,

int n)

//堆排序

}

void

mergestep

(int a,

int r,

int s,

int m,

int n)

//相鄰有序段合併

while

(i<=m)

//將未合併的部分複製到r中

r[k++

]=a[i++];

while

(j<=n)

r[k++

]=a[j++];

//將未合併的部分複製到r中

}void

mergepass

(int a,

int r,

int n,

int len)

//完成一遍合併的函式

if(s//還剩乙個有序段,將其從a中複製到r中

for(

;s) r[s]

=a[s];}

void

mergesort

(int a,

int n)

//合併排序

while

(lenif(f)

//若進行了排序

for(f=

0;f)//將陣列p中的資料複製到陣列a

a[f]

=p[f]

;free

(p);

//釋放分配的記憶體

}

c語言排序演算法

很多朋友是以譚浩強老師編的 c語言教程 作為學習 c語言的入門教程的。書中涉及排序問題一般都以 冒泡法 和 選擇法 實現。為了擴大視野,增加學習程式設計的興趣,我參閱了有關書籍,整理了幾種排序法,寫出來同大家共勉。高手們不要笑,這篇文章是寫給出學者的,而且我自己也是只菜鳥,雖然內容陳舊,但值得初學者...

c語言排序演算法

c語言排序演算法 非穩定的排序演算法 選擇排序 快速排序 希爾排序 堆排序 穩定的排序演算法 氣泡排序 插入排序 歸併排序和基數排序是穩定的排序演算法。讓我們先定義乙個整型陣列a n 下面用五種方法對其從小到大排序。1 冒泡法 冒泡法大家都較熟悉。其原理為從a 0 開始,依次將其和後面的元素比較,若...

C語言排序演算法

1.插入排序 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將新...