學過好久的東西,感覺都忘記的差不多了,雖然可能日常寫**的過程之中也可能寫過一些演算法,但是從來都沒有規整,最近忙裡偷閒,寫點關於排序的演算法,當然好多人都寫過一些很不錯的演算法blog,我寫一下,只是方便自己日後檢視,當然也給有需要的朋友一些參考,歡迎指正
排序演算法有:氣泡排序,選擇排序,插入排序......(未完待續)
1.氣泡排序: 很明顯,最下面的(或者說乙個,當然如果想倒序排列,則演算法反一下)依次往上比較找到最大的,放後面
(1)取第乙個元素,依次與後面的比較,大的往後去,小的往前走直到最大的放在最後面
(2)取第乙個元素,依次與後面的比較,與(1)一樣,問題在於此時最後乙個一定是最大的,因為你知道,所以第二次查詢的時候就需要比較到第n-2(假設一共n個元素),這個時候應該會寫乙個控制吧
(3)重複上面內容,此時存在兩個for迴圈,乙個依次比較,乙個控制比較到什麼位置,後面的一定會是大的了
ok,一般的寫法就是這樣,沒啥大問題,我還寫(4)當然也是看的別人的
(4)假如第1個 < 第二個,第2個 < 第3個,第3個《第4個......呀,他們是本身就是有序的啊,那我們壓根就不需要排序了,此時需要加乙個flag 控制是否 需要新排序
上**
/// /// 氣泡排序
/// 取出第0個第1個,進行比較,如果a > b,則交行位置,否則繼續取第1個與第2個,直到最後乙個
/// 從頭取第0個第1個,進行比較,如果a>b,則交換位置,否則繼續取第1個與第2個,直到倒數第二個(因為最後乙個一定是最大的了已經)
/// flag 識別符號,確定是否當前排序已經正常
///
void sortoutbubble()
;int i, j, flag = 1;
//如果flag = 0,則表示未排序的數字事實上已經符合排列標準了,就不需要再次遍歷了
for (i = 1; i < numberarr.length && flag == 1; i++)
//如果沒有交換的泡泡,flag = 0說明各個順序已經對了,不需要再次遍歷}}
//此處可以列印log
}
未完待續 資料結構之排序演算法
1.插入排序 直接插入排序 include void insertsort int unsort int length unsort j temp int main void insertsort num,7 int i 0 for i i 7 i return 0 折半插入排序 include v...
資料結構之排序演算法
1 直接插入排序 將乙個記錄插入到已經排好序的有序表中,只有當排序結束時每個元素才能進入到正確的位置,複雜度為o n2 優點 演算法簡單 易行,當待排序記錄數量較少時,該演算法非常有效 缺點 資料規模較大時,效率比較低。演算法insertsort r,n insertsort1.插入排序 for j...
資料結構之排序演算法
這是我在學習資料結構的時候,寫的一些簡單 關於各種排序,查詢演算法,可以作為他人學習資料結構的時候參考用 由於寫的比較匆忙,難免有問題,如有問題,歡迎指正!include include 插入排序 對於每乙個元素位置i,先查詢他對於前面已排序的位置j,然後 再將j到i之間的陣列往後移位,將j位置插入...