3種氣泡排序

2021-06-01 10:09:06 字數 1162 閱讀 6707

第一種:最基本的解法

void bubble_sort1( int a, int size )

//if

}//for

}//while

}

第一種解法每次從第乙個元素開始把第i+1個最大的元素放到它應有的位置,而每次卻是比較所有的n個元素,明顯每次和之前已經排好的元素比較屬於多餘,引出解法2:每次排序後n自減1。

第二種:與咱們通常寫的二層for迴圈的氣泡排序一樣

void bubble_sort2( int a, int size )

//if

} n = n - 1;

}//while

}

上述解法1,2綜合起來就是我們經常寫的二重for迴圈的氣泡排序,如下所示:

下面就是我們通常寫的氣泡排序(摘自中文維基百科

)

void bubble_sort(int a, const int size)

// end if

} // end for j = ...

if (flag == true)

break;

} // end for i = ...

}

然後是第三種解法:此種解法原理同樣是減少每次排序的個數。由於我們每次交換兩個數a[i],a[i+1]時,都是因為a[i]具體精確描述為:

to accomplish this in pseudocode we write the following:

void bubble_sort( int a, const int size )

} n = newn;

}}

儘管bubble_sort從理解上和實施上是最簡單的排序演算法,但是它o(n2)

的時間複雜度意味著在lists有更多的元素時,該演算法的效率是非常低的。即使在

那些簡單的o(n2)時間複雜度的排序演算法中,比如插入排序也通常被認為比氣泡排序更優。

由於氣泡排序的簡單性,它經常被用來作為介紹演算法的概念。。。。。省略。。

此文只是在看《資料結構與演算法分析》引論時突然想寫寫,讀者朋友們還是應該掌握其他更高階的排序演算法。

reference:

排序 3 氣泡排序

氣泡排序我想初學程式設計的人都很熟悉,是我們大家最常使用到的,也是最簡單的排序,所以我也不過多的介紹了。氣泡排序屬於交換排序是穩定的排序 時間複雜度 最好情況 o n 最壞情況o n2 平均情況o n2 空間複雜度 o 1 它的排序思想也很簡單我們簡單介紹一下 對於n個資料,從第乙個資料開始依次對相...

3 氣泡排序

屬於原址排序。1 思路 氣泡排序就是把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。每次遍歷完原陣列一次,最大的元素便在最後面。2 複雜度分析 2.1 時間複雜度 最好情況 正序有序,只需要比較n次。所以為o n 程式需加個flag標誌位,一次遍歷若是正序則break。最壞情...

Python氣泡排序(3)

python 氣泡排序 3 在未排序的數中,通過兩兩比較 換位 的方式,將最大的數移至末尾 n個數排序,則需要執行n 1輪,第1輪比較n 1次,後續每輪比上一輪少比較1次 本例中 第1輪將9放到正確位置 第2輪將8放到正確位置 第9輪將1放到正確位置 此方法中,兩個位置數字比較時,有乙個位置是不變的...