C言语教程第四章: 数组(7)



挨次举例

  把一个整数按年夜小挨次拔出已排好序的数组中。 为了把一个数按年夜小拔出已排好序的数组中, 应首先确定排序是从年夜到小仍是从小到年夜进行的。设排序是从年夜到小进序的, 则可把欲拔出的数与数组中各数一一比赛, 当找到第一个比拔出数小的元素i时,该元素之前即为拔出地位。然后从数组最初一个元素起头到该元素为止,一一后移一个单元。最初把拔出数赋予元素i即可。假设被拔出数比一切的元素值都小则拔出最初地位。
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i )
{ p=i;q=a[i];
for(j=i 1;j<10;j )
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i )
if(n>a[i])
{for(s=9;s>=i;s--) a[s 1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i )
printf("%d ",a[i]);
printf("\n");
}
本挨次首先对数组a中的10个数从年夜到小排序并输入排序效果。然后输入要拔出的整数n。再用一个for语句把n和数组元素一一比赛,假设发现有n>a[i]时,则由一个内轮回把i以下各元素值顺次后移一个单元。后移应从后向进步行(从a[9]起头到a[i]为止)。 后移完毕跳出外轮回。拔出点为i,把n赋予a[i]即可。 如一切的元素均年夜于被拔出数,则并未进行那时移工作。此时i=10,效果是把n赋于a[10]。最初一个轮回输入拔出数后的数组各元素值。挨次运转时,输入数47。从效果中可以看出47已拔出到54和 28之间。



版权声明: 原创作品,许愿转载,转载时请务必以超链接方式标明文章 原始来由 、作者信息和本声明。否则将追查执法责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975606.html