1 題目
函數:bubble_order()
功能:使用指針實現冒泡排序
描述:實現C語言經典的冒泡排序
2 思路
冒泡排序的基本思路:
如果對 n 個數進行冒泡排序,則需要進行 n-1 躺比較,在第 1 趟比較中要進行 n-1 次兩兩比較,在第 j 趟比較中要進行 n-j 次兩兩比較
3 代碼
#include <stdio.h>
#include <stdlib.h>
/**
函數:bubble_order()
功能:使用指針實現冒泡排序
描述:實現C語言經典的冒泡排序
**/
void bubble_order(int *a, int n) {
for (int i = 0; i < n-1; ++i) {
for (int j = 0; j < n-1-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);
}
}
}
}
int main(int argc, char const *argv[]) {
int a[20], n;
printf("請輸入要排序元素的個數:\n");
scanf("%d", &n);
printf("請輸入各個元素\n");
for (int i = 0; i < n; ++i) {
scanf("%d", a+i);
}
printf("排序前元素的內容為:\n");
for (int j = 0; j < n; ++j) {
printf("%d ", *(a+j));
}
bubble_order(a, n);
printf("\n排序后元素的內容為:\n");
for (int j = 0; j < n; ++j) {
printf("%d ", *(a+j));
}
printf("\n");
getchar();
}
示例結果:
$ gcc ex023.c -o demo
$ ./demo
請輸入要排序元素的個數:
5
請輸入各個元素
3
7
1
9
4
排序前元素的內容為:
3 7 1 9 4
排序后元素的內容為:
1 3 4 7 9