制作:方斌 程序流程图:(用两层嵌套循环实现) 程序:设需排序的数有10个,定义数组大 小为11,使用a[1]~a[10]存放10个数, a[O]不用
制 作:方 斌 程序流程图:(用两层嵌套循环实现) 程序:设需排序的数有10个,定义数组大 小为11,使用a[1]~a[10]存放10个数, a[0]不用
制作:方斌 maino inta[11]:/*用a[1]~a[10],a[0]不用*/ int i] t; /*i作循环变量,t作两两比较的临时变量*/ printf("input 10 numbers: n") for(i=1;<11;i++) scanf("%d",&a[订);/*输入10个整数*/ printf( n"); for(j=1;j<=9;j++)/第趟比较* for(i=1;<=10ji++)/*第j趟中两两比较10-j次* if(a[]>a[i+1])/*交换大小* {t=a[i;a[i=a[i+1];a[i+1]=t;} printf( the sorted numbers: n"; for(i=l;i<11; 1++ printf(%/od"aliD;
制 作:方 斌 main() { int a[11]; /* 用a[1]~a[10], a[0]不用 */ int i,j,t; /* i,j作循环变量,t作两两比较的临时变量 */ printf("input 10 numbers:\n"); for(i=1;i<11;i++) scanf("%d",&a[i]); /* 输入10个整数 */ printf("\n"); for(j=1;j<=9;j++) /* 第j趟比较 */ for(i=1;i<=10-j; i++) /* 第j趟中两两比较10-j次 */ if (a[i] > a[i+1]) /* 交换大小 */ { t = a[i]; a[i] = a[i+1]; a[i+1] = t; } printf("the sorted numbers:\n"); for(i=1;i<11;i++) printf("%d",a[i]); }
制作:万斌 [案例1]从键盘上任意输入10个整数,要求按从小到大的顺序在屏幕 上显示出来 排序的方法有很多,本题采用冒泡法。 冒泡法的基本思想:通过相邻两个数之间的比较和交换,使排序码(数 值)较小的数逐渐从底部移向顶部,排序码较大的数逐渐从顶部移向底部。 就像水底的气泡一样逐渐向上冒,故而得名。 由A[n]~A[1]组成的n个数据,进行冒泡排序的过程可以描述为: (1)首先将相邻的A[n]与A[n1进行比较,如果A[n]的值小于A[n1] 的值,则交换两者的位置,使较小的上浮,较大的下沉;接着比较A[n-1]与 A[n-2],同样使小的上浮,大的下沉。依此类推,直到比较完A[2]和A[1] 后,A[1]为具有最小排序码(数值)的元素,称第一趟排序结束。 (2)然后在A[n]~A[2]区间内,进行第二趟排序,使剩余元素中排序 码最小的元素上浮到A[2];重复进行n-1趟后,整个排序过程结束
制 作:方 斌 [案例1] 从键盘上任意输入10个整数,要求按从小到大的顺序在屏幕 上显示出来。 排序的方法有很多,本题采用冒泡法。 冒泡法的基本思想:通过相邻两个数之间的比较和交换,使排序码(数 值)较小的数逐渐从底部移向顶部,排序码较大的数逐渐从顶部移向底部。 就像水底的气泡一样逐渐向上冒,故而得名。 由A[n]~A[1]组成的n个数据,进行冒泡排序的过程可以描述为: (1)首先将相邻的A[n]与A[n-1]进行比较,如果A[n]的值小于A[n-1] 的值,则交换两者的位置,使较小的上浮,较大的下沉;接着比较A[n-1]与 A[n-2],同样使小的上浮,大的下沉。依此类推,直到比较完A[2]和A[1] 后,A[1]为具有最小排序码(数值)的元素,称第一趟排序结束。 (2)然后在A[n]~A[2]区间内,进行第二趟排序,使剩余元素中排序 码最小的元素上浮到A[2];重复进行n-1趟后,整个排序过程结束
制作:方斌 /*案例代码文件名:AL61.C*/ /*功能:从键盘上任意输入n个整数,用冒泡法按从小到大地排序,并在屏 幕上显示出来。*/ # include "stdio. h # define num10/*定义符号常量(数据个数N)*/ maino int data[NUM];/定义1个1维整型数组data*/ int i] temp; /*定义循环变量和临时变量* clrscro; /*库函数 corson(:清屏* printf("Please input 10 numbers: n") for(i=0; i<NUM; i++) scanf(" %/d", &datail
制 作:方 斌 /*案例代码文件名:AL6_1.C*/ /*功能:从键盘上任意输入n个整数,用冒泡法按从小到大地排序,并在屏 幕上显示出来。*/ #include "stdio.h" #define NUM 10 /*定义符号常量(数据个数N)*/ main() { int data[NUM]; /*定义1个1维整型数组data*/ int i,j,temp; /*定义循环变量和临时变量*/ clrscr(); /*库函数clrscr():清屏*/ printf("Please input 10 numbers:\n"); for(i=0; i<NUM; i++) scanf("%d", &data[i]);
制作:方斌 /*冒泡法排序*/ for(i=0; i<NUM-1; i++) /*外循环:控制比较趟数*/ for(j=NUM-1;j>ij-)/*内循环:进行每趟比较*/ f(data[j]<data[-1])/*如果data大于data-1],交换两者的位置*/ t temp=datalj] data[j]=data[j-1]: data[j-1]=temp; } /*输出排序后的数据*/ printf("nthe result of sort: n"); for(i=0;iNUM; i++) printf( %od"data[iD; getcho /*等待键盘输入任一字符,目的使程序暂停*/ }
制 作:方 斌 /*冒泡法排序*/ for(i=0; i<NUM-1; i++) /*外循环:控制比较趟数*/ for(j=NUM-1; j>i; j--) /*内循环:进行每趟比较*/ if(data[j]<data[j-1]) /*如果data[j]大于data[j-1],交换两者的位置*/ { temp=data[j]; data[j]=data[j-1]; data[j-1]=temp; } /*输出排序后的数据*/ printf("\nthe result of sort:\n"); for(i=0; i<NUM; i++) printf("%d ",data[i]); getch(); /*等待键盘输入任一字符,目的使程序暂停*/ }