/*
* 冒泡排序
* 1、从第一个元素开始,对每一对相邻的两个元素进行比较
* 2、如果前一个元素比后一个元素大,则交换这两个元素的位置
* 3、以此类推,直到所有元素均排序完毕
*/
#include <stdio.h>
#define SIZE 10
int main() {
/*
* i, j, k 是 for 循环语句中的索引
* temp 是用来交换两个元素的临时存储变量
* arr[] 是要排序的数组
*/
int i, j, k, temp, arr[SIZE];
printf("请输入 10 个数:");
for (i = 0; i < SIZE; i++) {
scanf("%d", &arr[i]);
}
// 冒泡排序
for (i = 0; i < SIZE - 1; i++) {
printf("========== 第 %d 轮 ==========\n", i+1);
/*
* 从第 1 个元素开始,对相邻的两个元素进行比较
* 当前一个元素比后一个元素大时,交换这两个元素的位置
* 每一轮比较结束后,最大的元素被放置在最右边
* 所以,每一轮的最后一位都不参与下一轮的比较
*/
for (j = 0; j < SIZE - 1 - i; j++) {
printf("i=%d, j=%d:", i, j);
if (arr[j] > arr[j+1]) {
// 交换两个元素的位置
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
// 输出数组元素
for (k = 0; k < SIZE; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
}
return 0;
}
设置编译环境:
D:\Works> set INCLUDE=D:\Visual C++ 6\VC98\Include
D:\Works> set LIB=D:\Visual C++ 6\VC98\Lib
编译 C 程序:
运行:
请输入 10 个数: 3 9 4 7 8 0 2 6 1 5
========== 第 1 轮 ==========
i=0, j=0:3 9 4 7 8 0 2 6 1 5
i=0, j=1:3 4 9 7 8 0 2 6 1 5
i=0, j=2:3 4 7 9 8 0 2 6 1 5
i=0, j=3:3 4 7 8 9 0 2 6 1 5
i=0, j=4:3 4 7 8 0 9 2 6 1 5
i=0, j=5:3 4 7 8 0 2 9 6 1 5
i=0, j=6:3 4 7 8 0 2 6 9 1 5
i=0, j=7:3 4 7 8 0 2 6 1 9 5
i=0, j=8:3 4 7 8 0 2 6 1 5 9
========== 第 2 轮 ==========
i=1, j=0:3 4 7 8 0 2 6 1 5 9
i=1, j=1:3 4 7 8 0 2 6 1 5 9
i=1, j=2:3 4 7 8 0 2 6 1 5 9
i=1, j=3:3 4 7 0 8 2 6 1 5 9
i=1, j=4:3 4 7 0 2 8 6 1 5 9
i=1, j=5:3 4 7 0 2 6 8 1 5 9
i=1, j=6:3 4 7 0 2 6 1 8 5 9
i=1, j=7:3 4 7 0 2 6 1 5 8 9
========== 第 3 轮 ==========
i=2, j=0:3 4 7 0 2 6 1 5 8 9
i=2, j=1:3 4 7 0 2 6 1 5 8 9
i=2, j=2:3 4 0 7 2 6 1 5 8 9
i=2, j=3:3 4 0 2 7 6 1 5 8 9
i=2, j=4:3 4 0 2 6 7 1 5 8 9
i=2, j=5:3 4 0 2 6 1 7 5 8 9
i=2, j=6:3 4 0 2 6 1 5 7 8 9
========== 第 4 轮 ==========
i=3, j=0:3 4 0 2 6 1 5 7 8 9
i=3, j=1:3 0 4 2 6 1 5 7 8 9
i=3, j=2:3 0 2 4 6 1 5 7 8 9
i=3, j=3:3 0 2 4 6 1 5 7 8 9
i=3, j=4:3 0 2 4 1 6 5 7 8 9
i=3, j=5:3 0 2 4 1 5 6 7 8 9
========== 第 5 轮 ==========
i=4, j=0:0 3 2 4 1 5 6 7 8 9
i=4, j=1:0 2 3 4 1 5 6 7 8 9
i=4, j=2:0 2 3 4 1 5 6 7 8 9
i=4, j=3:0 2 3 1 4 5 6 7 8 9
i=4, j=4:0 2 3 1 4 5 6 7 8 9
========== 第 6 轮 ==========
i=5, j=0:0 2 3 1 4 5 6 7 8 9
i=5, j=1:0 2 3 1 4 5 6 7 8 9
i=5, j=2:0 2 1 3 4 5 6 7 8 9
i=5, j=3:0 2 1 3 4 5 6 7 8 9
========== 第 7 轮 ==========
i=6, j=0:0 2 1 3 4 5 6 7 8 9
i=6, j=1:0 1 2 3 4 5 6 7 8 9
i=6, j=2:0 1 2 3 4 5 6 7 8 9
========== 第 8 轮 ==========
i=7, j=0:0 1 2 3 4 5 6 7 8 9
i=7, j=1:0 1 2 3 4 5 6 7 8 9
========== 第 9 轮 ==========
i=8, j=0:0 1 2 3 4 5 6 7 8 9
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.