一、N-S流程图;
二、运算原理说明;
1、排序前数据;
a[10] = { 34, 67, 90, 43, 124, 87, 65, 99, 132, 26 };
2、运算过程;
i = 0; j < 9;
j = 0;
34 > 67(不成立,不执行转换), 90, 43, 124, 87, 65, 99, 132, 26;
j = 1;
34, 67 > 90(不成立,不执行转换), 43, 124, 87, 65, 99, 132, 26;
j = 2;
34, 67, 90 > 43(成立,交换位置), 124, 87, 65, 99, 132, 26;
34, 67, 43, 90, 124, 87, 65, 99, 132, 26;
j = 3;
34, 67, 43, 90 > 124(不成立,不执行转换), 87, 65, 99, 132, 26;
j = 4;
34, 67, 43, 90, 124 > 87(成立,交换位置), 65, 99, 132, 26;
34, 67, 43, 90, 87, 124, 65, 99, 132, 26;
j = 5;
34, 67, 43, 90, 87, 124 > 65(成立,交换位置), 99, 132, 26;
34, 67, 43, 90, 87, 65, 124, 99, 132, 26;
j = 6;
34, 67, 43, 90, 87, 65, 124 > 99(成立,交换位置), 132, 26;
34, 67, 43, 90, 87, 65, 99, 124, 132, 26;
j = 7;
34, 67, 43, 90, 87, 65, 99, 124 > 132(不成立,不执行转换), 26;
j = 8;
34, 67, 43, 90, 87, 65, 99, 124, 132 > 26(成立,交换位置);
34, 67, 43, 90, 87, 65, 99, 124, 26, 132;
i = 1; j < 8;
j = 0;
34 > 67(不成立,不执行转换), 43, 90, 87, 65, 99, 124, 26, 132;
j = 1;
34, 67 > 43(成立,交换位置), 90, 87, 65, 99, 124, 26, 132;
34, 43, 67, 90, 87, 65, 99, 124, 26, 132;
j = 2;
34, 43, 67 > 90(不成立,不执行转换), 87, 65, 99, 124, 26, 132;
j = 3;
34, 43, 67, 90 > 87(成立,交换位置), 65, 99, 124, 26, 132;
34, 43, 67, 87, 90, 65, 99, 124, 26, 132;
j = 4;
34, 43, 67, 87, 90 > 65(成立,交换位置), 99, 124, 26, 132;
34, 43, 67, 87, 65, 90, 99, 124, 26, 132;
j = 5;
34, 43, 67, 87, 65, 90 > 99(不成立,不执行转换), 124, 26, 132;
j = 6;
34, 43, 67, 87, 65, 90, 99 > 124(不成立,不执行操作), 26, 132;
j = 7;
34, 43, 67, 87, 65, 90, 99, 124 > 26(成立,交换位置), 132;
34, 43, 67, 87, 65, 90, 99, 26, 124, 132;
i = 2; j < 7;
j = 0;
34 > 43(不成立,不执行转换), 67, 87, 65, 90, 99, 26, 124, 132;
j = 1;
34, 43 > 67(不成立,不执行转换), 87, 65, 90, 99, 26, 124, 132;
j = 2;
34, 43, 67 > 87(不成立,不执行转换), 65, 90, 99, 26, 124, 132;
j = 3;
34, 43, 67, 87 > 65(成立, 交换位置), 90, 99, 26, 124, 132;
34, 43, 67, 65, 87, 90, 99, 26, 124, 132;
j = 4;
34, 43, 67, 65, 87 > 90(不成立,不执行转换), 99, 26, 124, 132;
j = 5;
34, 43, 67, 65, 87, 90 > 99(不成立,不执行转换), 26, 124, 132;
j = 6;
34, 43, 67, 65, 87, 90, 99 > 26(成立,交换位置), 124, 132;
34, 43, 67, 65, 87, 90, 26, 99, 124, 132;
i = 3; j < 6;
j = 0;
34 > 43(不成立,不执行转换), 67, 65, 87, 90, 26, 99, 124, 132;
j = 1;
34, 43 > 67(不成立,不执行转换), 65, 87, 90, 26, 99, 124, 132;
j = 2;
34, 43, 67 > 65(成立,交换位置), 87, 90, 26, 99, 124, 132;
34, 43, 65, 67, 87, 90, 26, 99, 124, 132;
j = 3;
34, 43, 67, 65 > 87(不成立,不执行转换), 90, 26, 99, 124, 132;
j = 4;
34, 43, 67, 65, 87 > 90(不成立,不执行转换), 26, 99, 124, 132;
j = 5;
34, 43, 67, 65, 87, 90 > 26(成立,交换位置), 99, 124, 132;
34, 43, 67, 65, 87, 26, 90, 99, 124, 132;
i = 4; j < 5;
j = 0;
34 > 43(不成立,不执行转换), 67, 65, 87, 26, 90, 99, 124, 132;
j = 1;
34, 43 > 67(不成立,不执行转换), 65, 87, 26, 90, 99, 124, 132;
j = 2;
34, 43, 67 > 65(成立,执行转换), 87, 26, 90, 99, 124, 132;
34, 43, 65, 67, 87, 26, 90, 99, 124, 132;
j = 3;
34, 43, 65, 67 > 87(不成立,不执行转换), 26, 90, 99, 124, 132;
j = 4;
34, 43, 65, 67, 87 > 26(成立,交换位置), 90, 99, 124, 132;
34, 43, 65, 67,26, 87, 90, 99, 124, 132;
i = 5; j < 4;
j = 0;
34 > 43(不成立,不执行转换), 65, 67,26, 87, 90, 99, 124, 132;
j = 1;
34, 43 > 65(不成立,不执行转换), 67,26, 87, 90, 99, 124, 132;
j = 2;
34, 43, 65 > 67(不成立,不执行转换), 26, 87, 90, 99, 124, 132;
j = 3;
34, 43, 65, 67 > 26(成立,交换位置), 87, 90, 99, 124, 132;
34, 43, 65, 26, 67, 87, 90, 99, 124, 132;
i = 6; j < 3;
j = 0;
34 > 43(不成立,不执行转换), 65, 26, 67, 87, 90, 99, 124, 132;
j = 1;
34, 43 > 65(不成立,不执行转换), 26, 67, 87, 90, 99, 124, 132;
j = 2;
34, 43, 65 > 26(成立,交换位置), 67, 87, 90, 99, 124, 132;
34, 43, 26, 65, 67, 87, 90, 99, 124, 132;
i = 7; j < 2;
j = 0;
34 > 43(不成立,不执行转换), 26, 65, 67, 87, 90, 99, 124, 132;
j = 1;
34, 43 > 26(成立,交换位置), 65, 67, 87, 90, 99, 124, 132;
34, 26, 43, 65, 67, 87, 90, 99, 124, 132;
i = 8; j < 1;
j = 0;
34 > 26(成立,交换位置), 43, 65, 67, 87, 90, 99, 124, 132;
26, 34, 43, 65, 67, 87, 90, 99, 124, 132;
3、排序运算后;
a[10] = { 34, 26, 43, 65, 67, 87, 90, 99, 124, 132 };
三、运行结果;
四、源代码;
# define _CRT_SECURE_NO_WARNINGS
# include <stdio.h>int main()
{//初始化变量值;int a[10] = { 0 };int i = 0;int j = 0;int t = 0;//提示用户;printf("请输入10个数值:");//循环获取数值;for (i = 0; i < 10; i++){//获取;scanf("%d", &a[i]);}//换行;printf("\n");//循环冒泡排序;for (i = 0; i < 9; i++){//冒泡排序;for (j = 0; j < 9 - i; j++){//判断;if (a[j] > a[j + 1]){//交换;t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}//提示用户;printf("10个数按从小到大的顺序输出结果为:");//输出;for (i = 0; i < 10; i++){//打印;printf("%d ", a[i]);}return 0;
}