使用指针实现冒泡排序


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