冒泡排序
一、问题描述:

二、设计思路:

冒泡排序注意下标的越界问题,如果定义的相邻元素是a[j]、a[j+1]那么下标的取值范围是0~n-2,如果定义的相邻元素是a[j-1]、a[j]那么下标的取值范围为0~n-1
三、程序流程图:

四、代码实现:
#include<stdio.h> int main() { int a[10000]; int i; int N; int temp; printf("请输入N个数:"); scanf("%d",&N); for(i=0;i<N;i++) { scanf("%d",&a[i]); } for(i=0;i<N;i++) { for(int j=0;j<N-i-1;j++) { if(a[j]>a[j+1]) { temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; } } } for(i=0;i<N;i++) { printf("%3d",a[i]); } return 0; }

这样做需要先输入N的值,数组的大小也不好改,可以改进一下,采用宏定义来定义N,数组大小改变时只用改变N的大小
#include<stdio.h> #define N 10 int main() { int a[N]; int i; int temp; int cout=0; printf("请输入N个数:"); for(i=0;i<N;i++) { scanf("%d",&a[i]); } for(i=0;i<N;i++) { for(int j=0;j<N-i-1;j++) { if(a[j]>a[j+1]) { temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; } } } for(i=0;i<N;i++) { cout++; printf("%3d",a[i]); if(cout%4==0) { printf("\n"); } } return 0; }

经常用到冒泡排序,是每个软工人必须掌握的一个排序方式,后面还会讲更多排序方法,让我们锁定直播间,准时收看软件拓荒人的最新博客,咱们下次再见

浙公网安备 33010602011771号