交換排序
基本思想: 所謂交換,就是根據(jù)序列中兩個(gè)記錄鍵值的比較結(jié)果來對(duì)換這兩個(gè)記錄在序列中的位置,交換排序的特點(diǎn)是:將鍵值較大的記錄向序列的尾部移動(dòng),鍵值較小的記錄向序列的前部移動(dòng)。
冒泡排序
void BubbleSort(int* a, int n)
{
? ? for (int j = 0; j < n; j++)
? ? {
? ? ? ? int exchange = 0;//設(shè)置一個(gè)初值為0的變量,看這一次排序數(shù)組是否有變化
? ? ? ? for (int i = 1; i < n - j; i++)
? ? ? ? {
? ? ? ? ? ? if (a[i - 1] > a[i])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Swap(&a[i - 1], &a[i]);
? ? ? ? ? ? ? ? exchange = 1;//如果發(fā)生了交換,則將exchange的值變?yōu)?
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (exchange == 0)//exchange為0的話說明這一趟排序數(shù)組是有序的
? ? ? ? ? ? ? ? ? ? ? ? ? //所以跳出這一趟循環(huán)
? ? ? ? {
? ? ? ? ? ? break;
? ? ? ? }
? ? }
}
冒泡排序的特性總結(jié):
- 冒泡排序是一種非常容易理解的排序
- 時(shí)間復(fù)雜度:O(N^2)
- 空間復(fù)雜度:O(1)
- 穩(wěn)定性:穩(wěn)定
-