C语言, 输入一个数组使数组中最大的数放在最后 最小的数放在前面 其他数排列不变???

如题所述

你这题难度很大啊,搞了几个小时,终于搞出来了,多加点辛苦分可以吗源程序如下:#include <stdio.h>
//将数组中最小数放在最前,最大数放在最后
void PartSort(int *num,int length)
{
int i;
int min,max;
int temp; //找到最大和最小的数的索引
min=0;
max=0;
for(i=1;i<length;i++ )
{
if( num[i]>num[max])
max = i;
if( num[i] < num[min] )
min = i;
}
//将最小的数移到最前
temp = num[min];
for(i=min;i>0;i-- )
{
num[i]=num[i-1];
}
num[0]=temp;
if(min>max)//如果最小数原位置在最大数后面,即最大数被向后移动了
max+=1; //更新最大数索引
//将最大的数移到最后
temp=num[max];
for(i=max;i<length-1;i++ )
{
num[i]=num[i+1];
}
num[length-1]=temp;
return;
}
void main()
{
int i;
int length; //数据元素个数自己定义不超过100
int num[100];
printf( "请输入数组的个数:\n");
scanf( "%d", &length);
printf( "请输入%d个整数:\n",length);
for (i=0;i<length;i++ )
{
scanf("%d",&num[i]);
}
PartSort(num,length);
printf("排序后的数组为:\n" );
for (i=0;i<length;i++)
{
printf("%d ",num[i]);
}
printf("\n");
return;
}VC++测试如下:
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-12
我给出其中最主要的排序的算法吧,先将数组放入a[10]中
int i = 0,min = a[0], max = a[0],temp,minnum,maxnum;
while(i < 10)
{ if(min > a[i])
{min = a[i];<br> minnum = i;<br> }
i++;
}
temp = a[minnum];
a[minnum] = a[0];
a[0] = temp;

i = 0;
while(i < 10)
{ if(max < a[i])
{max = a[i];<br> maxnum = i;<br> }
i++;
}
temp = a[maxnum];
a[maxnum] = a[9];
a[9] = temp;

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网