问题如下:任意输入一串文字,使用排序法按照顺序排出来。
分析问题:首先看一下这个题,经过读题我们得知使用方法是排序法,先说一下什么是插入法:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。代码如下:
1 #include <stdio.h> 2 int insort(int s[],int n) 3 { 4 int i,j; 5 for(i=2;i<=n;i++) 6 { 7 s[0]=s[i]; 8 j=i-1; 9 while(s[0]<s[j]) 10 { 11 s[j+1]=s[j]; 12 j--; 13 } 14 s[j+1]=s[0]; 15 } 16 } 17 int mian() 18 { 19 int a[11],i; 20 printf("请输入10个数据: "); 21 for(i=1;i<=10;i++) 22 scanf("%d",&a[i]); 23 printf("原始数据: "); 24 for(i=1;i<11;i++) 25 printf("%d",a[i]); 26 insort(a,10); 27 printf("插入数据后排序: "); 28 for(i=1;i<11;i++) 29 printf("%d",a[i]); 30 printf(" "); 31 }