選擇排序也是一種簡單直觀的排序演算法。它的工作原理很容易理解:初始時在序列中找到最小(大)元素,放到序列的起始位置作為已排序序列;然後,再從剩餘未排序元素中繼續尋找最小(大)元素,放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
注意選擇排序與氣泡排序的區別:
氣泡排序通過依次交換相鄰兩個順序不合法的元素位置,從而將當前最小(大)元素放到合適的位置;而選擇排序每遍歷一次都記住了當前最小(大)元素的位置,最後僅需一次交換操作即可將其放到合適的位置。
#include
// 交換函式
void swap (int a, int i, int j)
// 列印陣列
void printa (int *a, int len)
printf ("\n");
}// 選擇排序
int main()
;int len = sizeof(a) / sizeof(a[0]);
int i,j;
int min;
// 外層迴圈控制輪數,每一輪找到乙個最小的數
for (i = 0; i < len-1; i++)
}// 如果當前頂端元素不是最小的值,將最小的值和頂端元素進行交換
if (min != i)
}printa (a, len);
return 0;}
C語言排序之快速排序篇
快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n個元素要 o nlogn 次比較。在最壞狀況下則需要 o n 2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 o nlogn 演算法更快,因為它的內部迴圈可以在大部分的架構上很有效率地被實現出來。快速排序使用分治策略...
C語言排序之選擇排序 一
今天主要寫了點c的排序,現在想來,語言啥的都如浮雲,當然能夠做到最簡單是最好的,比如用c 可以搞成模板,就省得寫一大堆相似的東西,就是乙個比較爽的事情,不過有些時候 高階 語言都讓我們懶得去思考了,實在是沒勁,還是思想重要,最近又對數學和演算法充滿了興趣 越發覺得計算機或者帶有 智慧型 系列的東西的...
C語言排序之歸併排序篇
歸併排序是建立在歸併操作上的一種有效的排序演算法,效率為o nlogn 1945 年由馮 諾伊曼首次提出。歸併排序的實現分為遞迴實現與非遞迴 迭代 實現。遞迴實現的歸併排序是演算法設計中分治策略的典型應用,我們將乙個大問題分割成小問題分別解決,然後用所有小問題的答案來解決整個大問題。非遞迴 迭代 實...