版本記錄
版本號 | 時間 |
---|---|
V1.0 | 2017.08.15 |
前言
將數(shù)據(jù)結構和算法比作計算機的基石毫不為過,追求程序的高效是每一個軟件工程師的夢想。下面就是我對算法方面的基礎知識理論與實踐的總結。感興趣的可以看上面幾篇。
1. 算法簡單學習(一)—— 前言
2. 算法簡單學習(二)—— 一個簡單的插入排序
3. 算法簡單學習(三)—— 分治法與合并排序
冒泡排序
冒泡排序重復的交換相鄰的兩個反序元素。
1. 偽代碼
下面看一下偽代碼。
冒泡排序偽代碼
2. 代碼實現(xiàn)
其實冒泡排序還是很好理解的,特別是很多面試的時候經(jīng)常問冒泡排序的實現(xiàn)等等,下面我們就給出代碼,具體如下所示:
#include <stdio.h>
#include <string.h>
#include <time.h>
int main(int argc, const char * argv[])
{
//冒泡排序
int A[8] = {10, 4, 5, 7, 1, 2, 3, 6};
int length = sizeof(A)/sizeof(A[0]);
for (int i = 0; i < length - 1; i ++) {
for (int j = length; j > i; j --) {
if (A[j] < A[j - 1]) {
A[j] = A[j] ^ A[j - 1];
A[j - 1] = A[j] ^ A[j - 1];
A[j] = A[j] ^ A[j - 1];
}
}
}
for (int k = 0; k < length; k++) {
printf("%d\n",A[k]);
}
}
下面看輸出結果
1
2
3
4
5
6
7
10
Program ended with exit code: 0
這里最外層循環(huán)輪次為length - 1
輪,內(nèi)層輪次比較為length - i
輪。找到后者比前者小的元素,就用亦或交換兩個值的位置,最后for循環(huán)遍歷輸出最終排好序列的數(shù)組A。
后記
未完,待著,這一篇寫的比較少,關于冒泡也沒什么多說的。
秋