当前位置: 代码迷 >> C语言 >> 排序问题
  详细解决方案

排序问题

热度:129   发布时间:2007-04-26 16:18:19.0
排序问题

将键盘输入一个数,插入到已降序排列的数组中,要求按原来的排序规律插入~~~

*********************************************************************

#include<stdio.h>
main()
{
int i,j=0,a[11]={20,18,16,14,12,10,8,6,4,2},k;
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
printf("Input k:");
scanf("%d",a[i]);
while(a[j]>k&&j<10)
j++;
for(i=0;i<10;i++)
a[i]=a[i-1];
a[j]=k;
for(i=0;i<11;i++)
printf("%4d",a[i]);
printf("\n");
}

**************************************************************


----------------解决方案--------------------------------------------------------
在上述问题中,主要是应用了一维数组问题,在定义数组时必须多开辟一个存储单元用于存放的数据.若要保证插入数后原数组仍按降序排列,应该先找到合适的位置再插入.本题采用的不是先把数放在最后位置,然后进行排序的算法.~~~~~
----------------解决方案--------------------------------------------------------
以下是引用tomneusoft在2007-4-26 16:18:19的发言:

将键盘输入一个数,插入到已降序排列的数组中,要求按原来的排序规律插入~~~

*********************************************************************

#include<stdio.h>
main()
{
int i,j=0,a[11]={20,18,16,14,12,10,8,6,4,2},k;
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
printf("Input k:");
scanf("%d",a[i]);//改为scanf("%d",&k);
while(a[j]>k&&j<10)
j++;
for(i=0;i<10;i++)// 改为 for(i=9;i>=j;i--)
a[i]=a[i-1];// 改为 a[i+1]=a[i];
a[j]=k;
for(i=0;i<11;i++)
printf("%4d",a[i]);
printf("\n");
}

**************************************************************


----------------解决方案--------------------------------------------------------
#include<stdio.h>
main()
{
int i,j=0,a[11]={20,18,16,14,12,10,8,6,4,2},k;
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
printf("Input k:");
scanf("%d",&k);
while(a[j]>k&&j<10)
j++;
for(i=10;i>j;i--)
a[i]=a[i-1];
a[j]=k;
for(i=0;i<11;i++)
printf("%4d",a[i]);
printf("\n");
}
----------------解决方案--------------------------------------------------------
我是个初学者,在这里谢谢大家了~~~~
----------------解决方案--------------------------------------------------------

  相关解决方案