C語言排序之選擇排序篇

2021-08-05 19:17:30 字數 693 閱讀 1622

選擇排序也是一種簡單直觀的排序演算法。它的工作原理很容易理解:初始時在序列中找到最小(大)元素,放到序列的起始位置作為已排序序列;然後,再從剩餘未排序元素中繼續尋找最小(大)元素,放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

注意選擇排序與氣泡排序的區別:

氣泡排序通過依次交換相鄰兩個順序不合法的元素位置,從而將當前最小(大)元素放到合適的位置;而選擇排序每遍歷一次都記住了當前最小(大)元素的位置,最後僅需一次交換操作即可將其放到合適的位置。

#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 年由馮 諾伊曼首次提出。歸併排序的實現分為遞迴實現與非遞迴 迭代 實現。遞迴實現的歸併排序是演算法設計中分治策略的典型應用,我們將乙個大問題分割成小問題分別解決,然後用所有小問題的答案來解決整個大問題。非遞迴 迭代 實...