利用数组对任意一组数据进行插入法排序
大家都知道,数组是一种数据结构,它的优势就是能让同一类数据或者说是多个数组元素放在一个数组里,而便于对它们进行操作。数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
<一维数组的定义方式>
类型说明符 数组名 [常量表达式]
<插入法>
插入的基本思想是,从第二个数开始,插入到前面的有序数列里。例如,当我们输入四个数:5、2、4、1,那么从第二个数,也就是2开始,用它与前面的5比较大小,因为2比5小,所以顺序相调,变成了2、5、 4 、1,再让第三个数7与前面的有序数比较,则变成2、4、 5 、1,以此类推就变成了1 、2、4、 5,这样就完成工作啦!
具体代码如下:
#include <stdio.h>
int main(int argc,char *argv[])
{
int n=6;
int i=0;
int j=0;
int a[j];
int temp=0;
printf("input your numbers:");
//从键盘上键入五个数到数组所在地址
for(j=0;j<n;j++)
scanf("%d",&a[j]);
/*从数组里的第二个数开始,用它与前面的有序数比较,形成从小到大的顺序,对于一组数据的排序,需要循环n-1次,每次
比较j-1次*/
for(i=1;i<n;i++)
{
for(j=i;j>=0;j--)
{
if(a[j-1]>=a[j])
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
//输出排好序的顺序
}
for(j=0;j<n;j++)
printf("%d\n",a[j]);
return 0;
}
总结
- 插入法也是一种经典的排序方法,与冒泡法类似,都是在还未排好序的数字里面选出最小数(其实也可以选出最大的数),最终达到排序的结果;
- 在用数组作为待处理数据时,要用for循环构架结构数据,同时排好序的数字用函数printf输出时也要用for循环,但是这个循环的位置要注意!(本人把这个输出过程放在了循环体内,这样就会输出n-1次结果,当然只有最后那次是正确的)。