将一个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. Idea_学习_10_Idea远程debug

    一.前言 二.远程debug 1.在远程机器启动java调试模式. 需要在启动时添加如下jvm参数,来以java调试模式运行项目. java -Xdebug -Xrunjdwp:server=y,tr ...

  2. 20180831_jar包冲突2_天安微信httpclient冲突

    一.异常现象 微信项目需要向腾讯服务器发送请求获取token. 但是在请求的时候抛了个异常: <2018-8-30 下午05时39分18秒 CST> <Notice> < ...

  3. Python3.7安装pyspider

    下面是Python3.7安装pyspider的方式,能安装成功但是后期有很多问题,所以不建议,请使用3.5版本的Python进行安装!!!由于要做爬虫工作,所以学习pyspider框架,下面介绍安装步 ...

  4. C# 读xml注释或过滤xml注释

    有这么个需求: 要统计所有的配置文件,这些配置文件都xml格式,并把这些配置写到数据表里,如果有注释要把这些注释写到对应配置对象的描述字段上 <item id="" key= ...

  5. ASP.NET MVC 缓存Outputcache (局部动态)

    首先说一下需求: 比如我需要对网站首页做缓存,于是在首页对于的Action上贴上了Outputcache,接着问题就来了,首页上的有部分数据是不能做缓存的,比如个人信息,不然,每个人登陆都是看到第一个 ...

  6. Python List reverse()方法

    reverse() 函数用于反向列表中元素,参数 NA,该方法没有返回值,但是会对列表的元素进行反向排序,原来的列表被改变,生成新的列表. 例子:list1 = ['Google', 'Runoob' ...

  7. 预备架构的工具ADMEMS矩阵

    矩阵,是很多著名方法的核心.例如,制定公司层战略的方法之一是"波士顿矩阵","波士顿矩阵"又称"市场增长率-相对市场份额矩阵". " ...

  8. 难道调用ThreadPool.QueueUserWorkItem()的时候,真是必须调用Thread.Sleep(N)吗?

    开门见山,下面的例子中通过调用ThreadPool.QueueUserWorkItem(WaitCallback callBack, object state)的方式实现异步调用: 1: class ...

  9. mezzanine安装配置

    ubuntu 14.04 cd /var/wwwmkdir testingcd testingvirtualenv venv --python=python3. venv/bin/activate p ...

  10. SQL SERVER存储过程的几种示例

    1.常用系统存储过程及使用语法:exec sp_databases; --查看数据库exec sp_tables; --查看表exec sp_columns student;--查看列exec sp_ ...