数据结构的一个问题
编写一个算法实现找出n个整数类型数据的顺序表中的最大数和最小数,然后将最大数放到最小数后面。如:原顺序表为:12,6,4,20,14,7,9,36,10,15,调整后顺序表为:12,6,4,36,20,14,7,9, 10,15。解题思路大概清楚,就是不会用代码表现出来!{:5_99:} http://c.biancheng.net/view/1420.html 最大最小我知道怎么求,就是把最大值放在最小值的后面这一步不知道怎么实现。 liuyanxiong 发表于 2020-9-25 17:12
最大最小我知道怎么求,就是把最大值放在最小值的后面这一步不知道怎么实现。
1,请点回复,不然别人看不见
2,比如案例中的数据
先把36存到一个变量 temp 中,然后再把 原来 36 的位置赋值为 9,然后再把 原来 9 的位置赋值为 7,然后再把 原来 7 的位置赋值为 14,然后再把 原来 14 的位置赋值为 36 也就是 temp 变量, 本帖最后由 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);
int min=0,max=0,temp;
printf("移动之前……\n");
for (count=0;count<size;count++)
printf("%d",numbers);
for (count = 1;count < size; count++)//找最大最小值的位置
{
if (numbers < numbers)
min=count;
if (numbers > numbers)
max=count;
}
temp=numbers;//保存最大值
if (max>min)//若最大值在后则从max开始各数向后移动
{
for (count=max;count>min+1;count--)
numbers=numbers;
}
else//若最大值在前,则从max开始各数向前移动
{
for (count=max;count<min;count++)
numbers=numbers;
}
numbers=temp;//把最大值放在最小值后面
printf("\n移动之后……\n");
for (count=0;count<size;count++)
printf("%d",numbers);
return 0;
}
页:
[1]