使用指針實現冒泡排序


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM