将一个5×5的数组中的最大值放到数组的中心位置

分析:遍历数组,找到最大的元素,然后将该元素与中心位置的元素交换位置

#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main( void)
{
void changeArrayData(int *arrayAddress1, int *arrayAddress2);//声明交换元素的函数·
int array[5][5] = {0};
int i = 0, j = 0;
int *arrayMax = 0;
/*给数组赋值*/
srand((unsigned long)time(0));//初始化rand函数
while(i <25){
*(*array + i++) = rand()%100;//100以内的随机数
}
i = 0;
arrayMax = array[0];
while(++i < 25)
{
if(*(*array + i) > *arrayMax)//找最大值
arrayMax = *array + i;
}
if(arrayMax != array[2] + 2)
{
changeArrayData(arrayMax, array[2] + 2);//交换最大值
}
/*输出数组*/
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
cout<<*(*(array+i)+j)<<"\t";
cout<<endl;
}
cout<<endl;
return 0;
}
/******************************************************
函数功能: 交换两个整形地址单元的值
******************************************************/
void changeArrayData(int *arrayAddress1, int *arrayAddress2)
{
int temp = 0;
temp = *arrayAddress1;
*arrayAddress1 = *arrayAddress2;
*arrayAddress2 = temp;
}

运行界面:

代码分析:

使用rand函数对数组赋初值,然后通过“打擂台”的方法,遍历数组的所有元素,找到最大的元素。

然后把arrayMax获取最大元素的地址,将arrayMax和中间的元素(array[2][2])的地址传递给函数changeArrayData,进行位置的变换。

将一个5×5的数组中的最大值放到数组的中心位置,将最小值放到数组的第一个元素的位置。

#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main( void)
{
void changeArrayData(int *arrayAddress1, int *arrayAddress2);
int array[5][5] = {0};
int i = 0, j = 0;
int *arrayMax =*(array +2)+2, *arrayMin=*(array);
/*给数组赋值*/
srand((unsigned long)time(0));
while(i <25){
*(*array + i++) = rand()%100;//100以内的随机数
}
i = 0;
while(++i < 25)
{
if(*(*array + i) > *arrayMax)//找最大值
arrayMax = *array + i;
if(*(*array + i) < *arrayMin)//找最小值
arrayMin = *array + i;
}
if(arrayMax != array[2] + 2)
{
changeArrayData(arrayMax, array[2] + 2);//交换最大值
}
if(arrayMin != array[0] )
{
changeArrayData(arrayMin, array[0]);//交换最小值
}
/*输出数组*/
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
cout<<*(*(array+i)+j)<<"\t";
cout<<endl;
}
cout<<endl;
return 0;
}
/******************************************************
函数功能: 交换两个整形地址单元的值
******************************************************/
void changeArrayData(int *arrayAddress1, int *arrayAddress2)
{
int temp = 0;
temp = *arrayAddress1;
*arrayAddress1 = *arrayAddress2;
*arrayAddress2 = temp;
}

运行界面:




代码分析:
arrayMax用来获取数组中最大的元素的地址,然后通过changeArrayData函数和a[2][2]交换位置;
arrayMin用来获取数组中最小的元素的地址,然后通过changeArrayData函数和a[0][0]交换位置。


将一个5×5的数组中的最大值放到数组的中心位置,四个角分别放4个最小的元素。


#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main( void)
{
void changeArrayData(int *arrayAddress1, int *arrayAddress2);
int Array[5][5] = {0};
int i = 0, j = 0;
int *arrayMax =*(Array +2)+2, *arrayMin[4]={Array[0],Array[0]+4,Array[4],Array[4]+4};
/*给数组赋值*/
srand((unsigned long)time(0));
while(i <25){
*(*Array + i++) = rand()%100;//100以内的随机数
}
i = 0;
while(++i < 25)
{
if(*(*Array + i) > *arrayMax)//找最大值
arrayMax = *Array + i;
if(*(*Array + i) < *arrayMin[0])//找最小值
arrayMin[0] = *Array + i;
}
if(arrayMax != Array[2] + 2)
{
changeArrayData(arrayMax, Array[2] + 2);//交换最大值
arrayMax=Array[2]+2;
}
if(arrayMin[0] != Array[0] )
{
changeArrayData(arrayMin[0], Array[0]);//交换最小值
arrayMin[0]=Array[0];
}
i=1;
while(i++<25){
for(j=1;j<4;j++){
if(*(*Array + i)>*arrayMin[j-1]&&*(*Array + i)<*arrayMin[j])
changeArrayData(*Array+i,arrayMin[j]);//如果数组中的元素值,大于arrayMin[j-1],小于arrayMin[j],就将该元素与arrayMin指向的元素交换位置
}
} /*输出数组*/
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
cout<<*(*(Array+i)+j)<<"\t";
cout<<endl;
}
cout<<endl;
return 0;
}
/******************************************************
函数功能: 交换两个整形地址单元的值
******************************************************/
void changeArrayData(int *arrayAddress1, int *arrayAddress2)
{
int temp = 0;
temp = *arrayAddress1;
*arrayAddress1 = *arrayAddress2;
*arrayAddress2 = temp;
}

运行界面:




代码分析:

将最大值放到中间的思路不变,然后将四个最小值的地址放到四个指针数组中。

通过遍历获取最小值的地址,并放置到arrayMin[0]中。

然后,再次遍历数组中的所有元素,和arrayMin数组中的元素相比较:

          i=1;
while(i++<25){
for(j=1;j<4;j++){
if(*(*Array + i)>*arrayMin[j-1]&&*(*Array + i)<*arrayMin[j])
changeArrayData(*Array+i,arrayMin[j]);//如果数组中的元素值,大于arrayMin[j-1],小于arrayMin[j],就将该元素与arrayMin指向的元素交换位置
}
}

变量数组中的元素,分别和arrayMin数组中的元素相比较,如果数组中的元素值,大于arrayMin[j-1],小于arrayMin[j],就将该元素与arrayMin指向的元素交换位置。

然后就可以实现最小的四个元素分别在四个角上。

数组中的最大值以及最小值的位置变换的问题(C++)的更多相关文章

  1. 如何使用Math对象快速计算数组中的最大值或最小值

    Math 对象下包含 min() 和 max() 方法 用于确定一组数值中的最大值和最小值.这两个方法都可以接收任意多个数值参数. var max = Math.max(1,2,3,4,5,6); c ...

  2. C#获取一个数组中的最大值、最小值、平均值

    C#获取一个数组中的最大值.最小值.平均值 1.给出一个数组 ,,,,,-,,,,}; 2.数组Array自带方法 本身是直接可以调用Min(),Max(),Average()方法来求出 最小值.最大 ...

  3. Javascript获取数组中的最大值和最小值的方法汇总

    比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧   比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用 ...

  4. Java求一个数组中的最大值和最小值

    原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/9927186.html 今天在工作中遇到对一个已知的一维数组取出其最大值和最小值,分别用于参与 ...

  5. PHP获取以为数组中的最大值和最小值

    1.PHP获取一维数组中的最大值 <?php $a=array('1','3','55','99'); $pos = array_search(max($a), $a); echo $a[$po ...

  6. 求一个number数组中的最大值和最小值的差

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  7. js 取得数组中的最大值和最小值(含多维数组)

    转自:http://www.dewen.org/q/433 方法一: var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math. ...

  8. 2.10 用最少次数寻找数组中的最大值和最小值[find min max of array]

    [本文链接] http://www.cnblogs.com/hellogiser/p/find-min-max-of-array.html [题目] 对于一个由N个整数组成的数组,需要比较多少次才能把 ...

  9. 整理:Javascript获取数组中的最大值和最小值的方法汇总

    方法一: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //最小值 Array.prototype.min = function ...

随机推荐

  1. hzau 1203 One Stroke

    1203: One Stroke Time Limit: 2 Sec  Memory Limit: 1280 MBSubmit: 264  Solved: 56[Submit][Status][Web ...

  2. 使用饿了么ui表单验证报错: [Element Warn][Form]model is required for validat

    [Element Warn][Form]model is required for validat 如文末的完整例子: 该提示说的是 form表单需要一个绑定一个 对象(使用:model=" ...

  3. AOP注解式拦截

    1. 自己定义的拦截注解 package com.spring.aop; import java.lang.annotation.Documented; import java.lang.annota ...

  4. 剑指offer--19.重建二叉树

    先序:根>左>右 中序:左>根>右 后序:左>右>根 e.g. {1,2,4,7,3,5,6,8} {4,7,2,1,5,3,8,6} 先序第一个元素是根节点,在中 ...

  5. Python中类的约束

    如何在python中进行类的约束 使某些类必须有一些方法 1 python 的抽象类实现 === 约束性不高 Python是 解释性语言 from abc import ABCMeta from ab ...

  6. php实现word在线浏览功能。

    http://laoniangke.com/php/2012/10/08/php-doc-webview.html

  7. LeetCode 340. Longest Substring with At Most K Distinct Characters

    原题链接在这里:https://leetcode.com/problems/longest-substring-with-at-most-k-distinct-characters/ 题目: Give ...

  8. java 实现插入排序

    sorted数组第0个位置没有放数据 从sorted数组的第二个数据开始处理 package com.learn; public class InsertionSort { public static ...

  9. oracle中merge的用法,以及各版本的区别 Create

    Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令,通过这个merge你能够在一个SQL语句中对一个 ...

  10. POJ1456:Supermarket(并查集版)

    浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:http://poj.org/problem?id=1456 堆作法:https:/ ...