排序算法(3):冒泡排序

冒泡排序:遍历文件,如果近邻的两个元素大小顺序不对,就将两者的顺序进行交换,重复这样的操作,直到整个文件排好序。
从前到后排:首先将第一个记录的关键字和第二个记录的关键字进行比较,若第一个记录的关键字大于第二个记录的关键字则交换,然后比较第二个记录和第三个记录的关键字。
依次类推,直到第n-1和n个记录的关键字进行比较为止。上述是第一趟冒泡排序,将关键字最大的放在了最后的位置。然后进行第二趟冒泡排序,依次类推。
从后向前排:同从前向后排,只是将第一趟排序是将最小的关键字记录放在了第一位,依次类推。

代码实现:(从前向后排)

void BubbleSort(int a[], int n) {
	int i, j;
	int temp;
	for (i = 0; i < n - 1; i++) {
		for ( j = 0; j < n-i-1; j++)
		{
			if (a[j] > a[j+1]) {
				temp = a[j];
				a[j] = a[j+1];
				a[j+1] = temp;
			}
		}
	}
}

主程序代码(简单的数组元素排序):
#include<stdio.h>
#define N 100
void BubbleSort(int a[],int n);
main() {
	int i, j;
	int n;
	int a[N];
	printf("请输入排序数组元素的个数:");
	scanf_s("%d", &n);
	printf("请输入数组元素:");
	for ( i = 0; i <n; i++)
	{
		scanf_s("%d", &a[i]);
	}
	printf("排序前的数组元素:");
	for (i = 0; i <n; i++)
	{
		printf("%5d", a[i]);
	}
	printf("\n");
	BubbleSort(a, n);
	printf("排序后的数组元素:");
	for (i = 0; i <n; i++)
	{
		printf("%5d", a[i]);
	}
	printf("\n");
	getch();
}

你可能感兴趣的:(冒泡排序,C语言,排序算法)