这是一个插入排序的C问题。值得被学C的孩子来看一下。有什么不懂,可以和交流一下。好排序,共分享
#include <stdio.h>
#define MAX 255
int R[MAX];
// 注意:数组用的是1..n,数组的第0号用于作数据交换变量
void insert(int n)//从小到大排序
{
//注意:在进行的r[i]排序时,r[i]前面 的已经是有序的了
int i,j;
for(i=2;i<=n;i++)
if(R[i]<R[i-1]) //如果相邻的数后一个小于前一个
{
R[0]=R[i]; //将当前i对应的数组值保存到r[0]
j=i-1; //赋值成i-1;为do...while()里的作准备
do
{
R[j+1]=R[j];//将当前当前r[i-1] 赋给r[i];相当于后移
j--; //j--,相当于前移一位
}
while(R[0]<R[j]);//直到打到前面已经排序好的序列中比r[0]小的则结束
R[j+1]=R[0];//将r[i] 的位置 赋给当前找到的合适位置
}
}
main()
{
int i,n;
scanf("%d",&n); //输入要排序的个数
if(n<=0||n>MAX) //判断输入的个数是否在范围之内
{
printf("error"); //输出错误
exit(0); //退出程序
}
puts("please input the element one by one"); //依次输入你的n个数据
for(i=1;i<=n;i++)
scanf("%d",&R[i]); //输入数据
puts("the sequence you input is:"); //打印输入的数据
for(i=1;i<=n;i++)
printf("%d",R[i]);//输出数据
insert(n); //进行排序操作
puts("\nthe sequence after insert:"); //输出排序后的序列
for(i=1;i<=n;i++)
printf("%d ",R[i]);
puts("\nPress any key to quit");
getch();
}
|
|