一维数组中,实现对任意元素的交换

前段时间沉迷于打CSDN的比赛,结果生动形象地诠释了什么叫做“人菜瘾大”

除了第一次拿了个并列前十(还算尝到个甜头)其余三次都是惨败┐(゚~゚)┌ 

其中有不少题目都涉及到了一维数组间元素位置的互换,而我...还在管人家叫数列(-ω-;)

(毕竟自学不超过16小时)

目录

常见的所谓“数组元素互换”

所以,只能靠自己了(:3_ヽ)_

特殊但常见:交换最值

赋值/创建变量

获取最值

数值互换

封面回收


常见的所谓“数组元素互换”

CSDN中,也有许多博客对数组的元素互换有过讨论,但绝大部分是二维数组,且为固定横纵互换,输入输出结果就像这样:

[1,2,3]//输入
[4,5,6]  
[7,8,9]
//------------------
[1,4,7]//输出
[2,5,8]
[3,6,9]

这种转换似乎常见于各种练习题,及高校课程的例题 ;

但很显然,不是一维数组的范畴;

搜索结果剩下的部分,也确实有比较接近的结果,讨论交换一维数组中的最大值最小值

然而一般的数组的最大值和最小值,在不发生变化的情况下,明显是恒定的,无法达到自主选择的效果。(╯°Д°)╯︵┻━┻

所以,只能靠自己了(:3_ヽ)_


特殊但常见:交换最值

其实,一维数组的最大值最小值互换(或简称最值互换),也给了我们一些思路:

int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//首先,我们需要遍历这个含有10个元素的一维数组,找出其中的最大值和最小值。可以使用一个循环来实现:
int max = arr[];
int min = arr[];
------------我是虚线A------------------
for (int i = 1; i < 10; i++)
{
    if (arr[i] > max) 
    {
        max = arr[i];
    }
    if (arr[i] < min) 
    {
        min = arr[i];
    }
}
------------我是虚线B------------------
int temp = max;//找到最大值和最小值后,我们可以使用一个临时变量来交换它们的位置
max = min;
min = temp;

printf("最大值:%d,最小值:%d\n", max, min);

 上述代码块由CSDN内置AI“C知道”生成。

显然这个小家伙忘记了怎么缩进,结果还是得我自己一个一个空格地敲回来(〃>皿<)

可大致将其划分为三部分:

赋值/创建变量
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//首先,我们需要遍历这个含有10个元素的一维数组,找出其中的最大值和最小值。可以使用一个循环来实现:
int max = arr[];
int min = arr[];
获取最值
for (int i = 1; i < 10; i++)
{
    if (arr[i] > max) 
    {
        max = arr[i];
    }
    if (arr[i] < min) 
    {
        min = arr[i];
    }
}
数值互换
int temp = max;
max = min;
min = temp;

其中,最为重要且能够通用的核心思想,显然是利用中间变量temp,通过多次相互赋值,来达到交换效果(见下图),在实现一般情况的转换时,我们也可以采用这个方法(ノ´▽`)ノ♪

max → temp//其实也不一定非要写temp
 ↖ min ↙ 

推广至一般情况

其实拿到核心思想后,不难看出最值互换和一般互换,只是数值属性上的差异,

自行创建变量,然后用cin(没错这是C++)实现交换位置的自主选择(输入数即为数组位置编号),这里插入一段伪代码(doge)

输入A,B;
    ↓
A   →  temp
 ↖ B ↙ 
    ↓
   输出

完结撒花花~✿✿ヽ(°▽°)ノ

封面回收

 一维数组中,实现对任意元素的交换_第1张图片

你可能感兴趣的:(C,竞赛,c++,c语言,开发语言,后端)