liuyanxiong 发表于 2020-9-25 17:02:18

数据结构的一个问题

编写一个算法实现找出n个整数类型数据的顺序表中的最大数和最小数,然后将最大数放到最小数后面。如:原顺序表为:12,6,4,20,14,7,9,36,10,15,调整后顺序表为:12,6,4,36,20,14,7,9, 10,15。
解题思路大概清楚,就是不会用代码表现出来!{:5_99:}

liuzhengyuan 发表于 2020-9-25 17:08:40

http://c.biancheng.net/view/1420.html

liuyanxiong 发表于 2020-9-25 17:12:03

最大最小我知道怎么求,就是把最大值放在最小值的后面这一步不知道怎么实现。

liuzhengyuan 发表于 2020-9-25 17:15:04

liuyanxiong 发表于 2020-9-25 17:12
最大最小我知道怎么求,就是把最大值放在最小值的后面这一步不知道怎么实现。

1,请点回复,不然别人看不见

2,比如案例中的数据

先把36存到一个变量 temp 中,然后再把 原来 36 的位置赋值为 9,然后再把 原来 9 的位置赋值为 7,然后再把 原来 7 的位置赋值为 14,然后再把 原来 14 的位置赋值为 36 也就是 temp 变量,

sunrise085 发表于 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);
    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]
查看完整版本: 数据结构的一个问题