2014-02-24 23 views
1

我在C++中遇到了許多不同的Bubble排序算法實現。我會列出幾個(只是幾行不同的行),所以有人可以告訴我不同​​之處。我注意到一些使用while循環,它有點不同,但通過數組的線仍然是相同的。不同的氣泡排序算法代碼 - 有什麼區別? C++

這些代碼示例是使用for循環遍歷數組的代碼。

例1:

for (int i=0; i<size-1); i++) 
    for (int j=i+1; j<size; j++) 
    //swap lines 

例2:

for (int j=0; j<(size-1); j++) 
    //swap lines 

所以,有什麼區別呢?第二個每次遍歷整個陣列,第一個每次減少1個? 我知道算法遍歷數組,交換它,沒有重新回到數組的第一個元素,所以我猜第一個更好。

另外,什麼是最好的實施的泡泡排序在c + +(請包括代碼,如果可以的話)?

+0

(1)您已回答了您自己的問題。 (2)泡泡排序是一種標準算法,它們在Web上有很多資源。 – EJP

回答

3

冒泡排序是O(n^2),因此將總是像示例1中那樣具有嵌套循環,或者其他與之等效的東西。例2將使用一些其他的構造,可能是遞歸來實現相同的目標。

不會有一個最佳實施。不同的實現以不同的方式更好。泡泡排序有時用於在接近排序順序的列表上快速運行排序。使用此屬性的版本在有序列表上運行得更快,但在完全隨機的列表上運行速度可能會慢一些。