最近,開始認真學習演算法,為了更好的督促自己學習,也請大家幫忙監督,所以列了出來,歡迎批評指正。
第乙個是選擇排序
選擇排序的基本思想是:設有n個元素要排序,首先選擇最大的元素與第乙個元素交換,然後再對剩餘的n-1個元素進行類似處理,這樣重複n-1次後,即可將n個元素按由大到小的順序排列。若由小到大排序,只需每次選擇最小元素。
具體**如下:
1 #include "stdio.h"2
#define n 3
3void main(void)4
18}19for(i=0;i)
20
23 scanf("
%d",&temp);
24 }
演算法改進:事實上,執行元素的交換並不都是必須的,只要記住比較時大元素的位置,即序號即可,在內迴圈結束後做一次交換即可,從而提高程式的執行效率。
**如下:
1 #include "stdio.h"2
#define n 3
3void main(void)
417}18
}19for(i=0;i)
20
23 scanf("
%d",&temp);
24 }
簡單的快速排序
1 定義int left start,right end 再定義乙個標誌位 boolen flag true。2 在迴圈體中比較,只要left right,就進行比較。3 剛開始將最左邊數最為基準數basenumber arr left 將基準數basenumber逐一與右邊倒序比較,直到basen...
快速排序 簡單解析
如果使用插入排序將陣列按從小到大排序,在插入排序0的時候,需要依次判斷前移找到最前面的位置,這使得排序判斷成本增加。快速排序則是對這種情況的一種優化排序,是氣泡排序的一種改進。取乙個中間標準點,將大於這個標準點的值和小於標準點的值進行分組並放置在這個標準點的左右兩側,然後按照順序遞迴排序左右兩組的資...
簡單理解的快速排序
快速排序就是c.r.a.hoare 於 1962年提出一種劃分交換排序,它採用了分治的策略,通常稱其為分治法。分治法的基本意思是 將原問題分解為若干規模更小但結構與原問題相似的子問題,遞迴地解答這些子問題,然後將這些子問題的解組合為原問題的解。快速排序的基本思想是 假設當前待排序的無序區為 a lo...