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,直到找到已排序的元素小於或者等於新元素的位置 將新...