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

来源:互联网 发布:趣味学英语的软件 编辑:程序博客网 时间:2024/06/05 02:26
冒泡排序:遍历文件,如果近邻的两个元素大小顺序不对,就将两者的顺序进行交换,重复这样的操作,直到整个文件排好序。
从前到后排:首先将第一个记录的关键字和第二个记录的关键字进行比较,若第一个记录的关键字大于第二个记录的关键字则交换,然后比较第二个记录和第三个记录的关键字。
依次类推,直到第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 100void 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();}

1 0
原创粉丝点击