首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾,重複操作。
演算法分析:
第一輪比較是陣列中的第乙個元素與其他的元素一 一對比,只要找到比它小的,它兩就交換順序,所以第乙個相對於已經進行比較過的元素而言是最小的,繼續比較下去,當它和所有的元素都比較完之後,它就是所有元素中最小的有乙個了。
第二輪比較就只需要從第二個元素開始了,依此類推,就把所有元素從小到大排列完成了。(從大到小排序同理)
**實現:
void
selectsort
(int
*array,
int n)
}}
這個演算法的名字由來是因為越小(大)的元素會經由交換慢慢「浮」到數列的頂端(公升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「氣泡排序」。與「選擇排序」的區別在於選擇排序中的比較是乙個確定的元素與剩下的一一比較,而氣泡排序始終都是兩個相鄰的元素在比較,而且它將最大(小)元素放到數列的最後
演算法分析:
(從小到大排列)第乙個元素與第二個元素相比,如果第乙個大於第二個,那麼交換它們的順序,此時第二個與第三個比較,如果大於第三個,那麼同樣交換位置,此時第三個元素相對於前兩個元素而言是最大的,只要繼續和剩餘的比較下去,那麼比較完成之後,最後乙個元素就是最大的乙個。接下來就繼續開始新一輪的比較。
**實現:
void
bubblesort
(int
*array,
int n)
}}
後續內容持續更新中。。。 排序演算法基本齊全(C語言版)
直接給出當初大一下學期學演算法與資料結構課的程式吧,把很多排序演算法都寫了 有序集和無序集相鄰,摘取無序集首元素插入有序集 多佇列同時以增量為步長實施直接插入,當步長為1,調整後停止 將待排序元素分作有序集和無序集,持續從無序集中選出極值放入有序集特定位置,直至無序集為空 反覆掃瞄 return i...
選擇排序 C語言版
先說說選擇排序的思想 每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。穩定性和複雜度 選擇排序是不穩定的排序演算法,時間複雜度最壞為o n2 平均為o n2 空間複雜度為o 1 下面是我用c語言實現的選擇排序的源 如果有什麼不對的地...
希爾排序c語言版
以前學資料結構的時候,因為老師的時間問題,導致這個演算法沒講,今天有人問我這個演算法問題,然後下去查了一下資料,把這個演算法終於弄明白了,這個演算法就是將乙個陣列,先確定乙個步長,一般為陣列大小的一半,然後將間距每個步長對應的兩個數字,從頭到尾的進行比較。因為我們是從小到大,那麼就是如果前面的數如果...