|
发表于 2020-9-25 17:31:54
|
显示全部楼层
本楼为最佳答案
本帖最后由 sunrise085 于 2020-9-25 17:40 编辑
先找出最大最小值的位置,然后把之间的都向后移动一下就可以了嘛
- #include<stdio.h>
- int main(){
- int numbers[]={12,6,4,20,14,7,9,36,10,15};
- int count,size=sizeof(numbers)/sizeof(numbers[0]);
- int min=0,max=0,temp;
- printf("移动之前……\n");
- for (count=0;count<size;count++)
- printf("%d ",numbers[count]);
- for (count = 1;count < size; count++)//找最大最小值的位置
- {
- if (numbers[count] < numbers[min])
- min=count;
- if (numbers[count] > numbers[max])
- max=count;
- }
- temp=numbers[max];//保存最大值
- if (max>min)//若最大值在后则从max开始各数向后移动
- {
- for (count=max;count>min+1;count--)
- numbers[count]=numbers[count-1];
- }
- else//若最大值在前,则从max开始各数向前移动
- {
- for (count=max;count<min;count++)
- numbers[count]=numbers[count+1];
- }
- numbers[count]=temp;//把最大值放在最小值后面
- printf("\n移动之后……\n");
- for (count=0;count<size;count++)
- printf("%d ",numbers[count]);
- return 0;
- }
复制代码 |
|