氣泡排序顧名思義就是由於在排序過程中總是小數往前放,大數往後放,相當於氣泡上公升。
基本思想:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。然後從頭開始比較,比較n-2次,第二次結束,重複以上操作
至排序結束。
測試譚浩強版氣泡排序(b_s_tan)對隨機生成的10000個數的陣列進行排序所用時間為0.974s(每次執行所需時間不同)
優化後的氣泡排序(b_s_op)隨機生成100 000個數的陣列進行排序所用時間僅為 0.004s(每次執行所需時間較大不同)
設定乙個flag個標誌,如果這一趟排序發生了交換,則將flag置為true,否則為flase,顯然如果一趟排序沒有發生交換則說明陣列已排好序。
**如下:
#include #include #include #define bool int
#define true 1
#define false 0
#define size 100000
void b_s(int s, int n)
} if (pos)
return; }}
void b_s_tan(int s,int n)
} }printf("the sorted numbers:\n");
}void b_s_op(int s, int n)
k--;
} } int main(int argc, char *argv)
start = clock();
b_s_op(s,size);
//b_s_tan(s, size);
//b_s(s,size);
finish = clock();
total_time = (double)(finish - start) / clocks_per_sec;
printf("%d個數的執行時間為%.3f\n", size, total_time);
/*for (i = 0; i < size; i++)
printf("%d ", s[i]);*/
printf("\n");
system("pause");
}
考研 資料結構 排序演算法
include include using namespace std 排序演算法 時間複雜度 最好,最壞,平均 插入排序 void insert sort int arr,int n arr j 1 temp 折半插入排序 void insert02 sort int arr,int n else...
專題 資料結構與演算法
圖的最優路徑 一定要有表頭!一切操作基於表頭!執行緒池的原理就是基於表頭操作!void fun int n int main void 呼叫時一直往裡呼叫,終止點一直往外返回。利用這個特點咱們可以解決很多問題。typedef struct list struct list struct data s...
考研資料結構 排序
人生哪有最好,把每乙個當下做到最好,就很不錯了呀。以下以考試主要考查的重點內容為主體,講述過程以方便大家記憶為上,並不面面俱到。首先得知道排序分內部排序和外部排序。內部排序 排序整個過程中資料在記憶體中。外部排序 排序整個過程中資料會有出現在內 外存之間調動的情況。考研主要考內部排序。內部排序主要分...