本來一直想寫這篇文章來著,但自己平時瞎忙,今天碰巧有人問了,於是就把它寫出來。
乙個迴圈並不是說時間複雜度就是o(n), 氣泡排序的時間複雜度只能是o(n*n). 所以說如果有這麼一道題,它考的只是乙個程式設計技巧,並不是說有什麼更高效率的演算法。
而且用乙個迴圈寫出來的演算法沒有用兩個寫出來的演算法高效。因為要作一些額外的計算。
下面把傳統兩個迴圈巢狀的**和只用乙個迴圈的**貼出來了。
**只經過簡單測試。不過基本思想是很清楚的了。
1. 原始的兩個迴圈巢狀的氣泡排序
static
void sort(int array)}}
}2. 只用乙個迴圈的氣泡排序
這裡充分利用了除操作與取餘操作的關係這一技巧。如果你理解了《程式設計之美》第二章 將帥問題的解決方案的精髓的話,那麼下面的**就很容易理解了。
static
void sortoneloop(int array)
total--;}}
小小c 演算法題 5 插入排序
插入排序是最簡單 最容易理解 的一種排序演算法。其基本操作是將乙個數插入到已經有序的陣列中,那麼我們要做的是確定插入到什麼位置,所有在這個位置之後的數後移乙個位置,從而給這個要插入的數騰出位置。所以關鍵點是找插入位置。最簡單的辦法,從最後乙個元素開始找,邊找邊後移,一直到找到合適的插入位置。首先,陣...
氣泡排序演算法 C 氣泡排序演算法排序詳解
氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...
c 排序演算法 氣泡排序
前一章講過的簡單桶排序有很多缺陷,它只能給整數排序,對付浮點數就無能為力了。如果想對像3.5,5.66,7.43,6.9 這些小數排序,可以用氣泡排序法 bubble sort 氣泡排序法的基本思想是 每次比較兩個相鄰的元素,如果順序錯誤就交換它們的位置。例如我們對66 77 99 100 101 ...