pta-C4-数组-7-1 交换最小值和最大值

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。

注意:题目保证最大和最小值都是唯一的。

输入格式:

输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。

输出格式:

在一行中顺序输出交换后的序列,每个整数后跟一个空格。

输入样例:

5
8 2 5 1 4

输出样例:

1 2 5 4 8 

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。

注意:题目保证最大和最小值都是唯一的。

输入格式:

输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。

输出格式:

在一行中顺序输出交换后的序列,每个整数后跟一个空格。

输入样例:

5
8 2 5 1 4

输出样例:

1 2 5 4 8 


以下为我写的

感觉有点繁琐了哈哈

#include<stdio.h>
int main()
{
    int N;
    int i,k,j;
    int max,mid,min;
    scanf("%d",&N);
    int a[9];
  if(N==2){
      scanf("%d %d",&a[0],&a[1]);
    if(a[0]>a[1]){
      mid=a[1];
      a[1]=a[0];
      a[0]=mid;
    }
    for(i=0;i<N;i++)
      printf("%d ",a[i]);
  }
  else if(N==1){
    scanf("%d",&a[0]);
    printf("%d ",a[0]);
  }
  else{
    for(i=0;i<N;i++){
        scanf("%d",&a[i]);
      }
      min=a[0];
    for(i=1;i<N;i++){
        if(a[i]<min){
            min=a[i];
            j=i;
        }
    }
        mid=a[0];
        a[0]=a[j];
        a[j]=mid;
        max=a[0];
    for(i=1;i<N;i++){
        if(a[i]>max){
            max=a[i];
            k=i;
        }
    }
    mid=a[N-1];
    a[N-1]=a[k];
    a[k]=mid;
    for(i=0;i<N;i++)
    printf("%d ",a[i]);
  }
    return 0;
}

### 关于C/C++/Python 中一维数组最大值最小值交换的实现 #### 使用 Python 实现 在 Python 中可以利用列表解析以及内置函数 `max()` `min()` 来找到最大值及其索引位置,同样对于最小值也是如此。之后通过简单的赋操作完成两者的互换。 ```python def swap_max_min(lst): if not lst: # 如果列表为空,则直接返回原列表 return [] min_val = min(lst) # 获取最小值 max_val = max(lst) # 获取最大值 min_idx = lst.index(min_val) # 找到最小值的位置 max_idx = lst.index(max_val) # 找到最大值的位置 # 创建一个新的列表来存储修改后的数据 result = list(lst) result[min_idx], result[max_idx] = result[max_idx], result[min_idx] return result # 测试例子 test_list = [3, 1, 4, 1, 5, 9, 2, 6] print(swap_max_min(test_list)) ``` 这段代码展示了如何在一个给定的一维整数列表里定位并交换其中的最大值最小值[^1]。 #### 使用 C++ 实现 当涉及到 C++ 编程语言时,可以通过遍历整个数组来找寻最大值最小值对应的下标,并终执行它们之间的数交换过程。 ```cpp #include <iostream> using namespace std; void swapMaxMin(int* arr, int size){ int minIndex=0; int maxIndex=0; for(int i=1 ;i<size;++i){ if(arr[i]<arr[minIndex]) minIndex=i; else if(arr[i]>arr[maxIndex]) maxIndex=i; } // Swap the minimum and maximum elements. int temp = arr[minIndex]; arr[minIndex]=arr[maxIndex]; arr[maxIndex]=temp; } // Function to display array content void showArray(const int *array,int length){ for(int idx=0;idx<length;++idx){ cout<<array[idx]<<" "; } cout<<"\n"; } ``` 此部分提供了完整的解决方案用于处理静态分配的一维整形数组,在该结构内寻找极并对这些特定项实施置换动作[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值