将一个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. python--关于if __name__==__main__的解释

    在解释之前首先我们看下__name__这个变量存的是什么: #!/usr/bin/env python # -*- coding:utf-8 -*- print(__name__) 结果: __mai ...

  2. JVM_总结_00_资源帖

    一.官方资料 Java Platform Standard Edition 8 Documentation The Java™ Tutorials Java 8 API 二.精选资料 发布<Ja ...

  3. poj1325

    给出一系列任务,每个任务可以在机器A的某个模式,或者在机器B的某个模式下完成.机器A和B每切换一次模式需要重启一次.问完成这些任务,最少需要重启机器多少次? 把任务看作边 “重启”操作看作点 这道题就 ...

  4. Network Saboteur (深搜递归思想的特殊使用)

    个人心得:对于深搜的使用还是不到位,对于递归的含义还是不太清楚!本来想着用深搜构成一个排列,然后从一到n分割成俩个数组,然后后面发现根本实现不了,思路太混乱.后来借鉴了网上的思想,发现用数组来标志,当 ...

  5. 九、python沉淀之路--递归、全局变量、局部变量、作用域

    一.递归 1.递归函数,同时使用嵌套,并且是将别的函数作用于调用函数里面 例1 num = [1,2,3,4,5] def add_one(i): return i+1 def reduce(i): ...

  6. grunt 压缩js css html 合并等配置与操作详解

    module.exports = function(grunt){ //1.引入 grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTa ...

  7. Asp.net工作流workflow实战之工作流启动与继续(三)

    工作流帮助类: //让工作流继续沿着书签的位置向下执行value是向书签传递参数 wfc.ResumeBookmark(bookmarkName,value); //把传过来的数据value作为输出参 ...

  8. 蓝桥杯 历届试题 PREV-32 分糖果

    历届试题 分糖果   时间限制:1.0s   内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边 ...

  9. 开发环境无错,部署至测试环境报错“NoSuchMethodError”OR"NoSuchClassError"

    背景: 实现一个简单的功能,需要用到jedis的jar包连接Redis.在之前便已经有使用jedis,它的版本比较旧,是2.1的.而新实现的功能,在编码的时候使用的是2.8的.在开发环境完成单元测试后 ...

  10. Oracle 静默安装oracle client

    静默安装oracle clint比较简单,修改instantclient.crsp文件的几个位置即可 [root@localhost ~]# vi /etc/oralnstloc inventory_ ...