数组中的最大值以及最小值的位置变换的问题(C++)
将一个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;
}
运行界面:
将一个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++)的更多相关文章
- 如何使用Math对象快速计算数组中的最大值或最小值
Math 对象下包含 min() 和 max() 方法 用于确定一组数值中的最大值和最小值.这两个方法都可以接收任意多个数值参数. var max = Math.max(1,2,3,4,5,6); c ...
- C#获取一个数组中的最大值、最小值、平均值
C#获取一个数组中的最大值.最小值.平均值 1.给出一个数组 ,,,,,-,,,,}; 2.数组Array自带方法 本身是直接可以调用Min(),Max(),Average()方法来求出 最小值.最大 ...
- Javascript获取数组中的最大值和最小值的方法汇总
比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧 比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用 ...
- Java求一个数组中的最大值和最小值
原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/9927186.html 今天在工作中遇到对一个已知的一维数组取出其最大值和最小值,分别用于参与 ...
- PHP获取以为数组中的最大值和最小值
1.PHP获取一维数组中的最大值 <?php $a=array('1','3','55','99'); $pos = array_search(max($a), $a); echo $a[$po ...
- 求一个number数组中的最大值和最小值的差
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- js 取得数组中的最大值和最小值(含多维数组)
转自:http://www.dewen.org/q/433 方法一: var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math. ...
- 2.10 用最少次数寻找数组中的最大值和最小值[find min max of array]
[本文链接] http://www.cnblogs.com/hellogiser/p/find-min-max-of-array.html [题目] 对于一个由N个整数组成的数组,需要比较多少次才能把 ...
- 整理: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 ...
随机推荐
- phpstorm修改html模板
- 201621123014《Java程序设计》第十三周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网 ...
- Codeforces Round #276 (Div. 2)A. Factory(数论)
这道题可以暴力的一直按要求的方法去做,做1000000次还不能整除m就认为永远不能整除m了(m不超过100000,循环1000000次比较安全了已经).这种方法可以AC. 下面深入的分析一下到底循环多 ...
- ICE 的回调
使用分布式计算中间件ICE到现在已经有一年多了,在这一年里里面对ICE的理解.应用比较熟悉. 使用ICE写分布式软件,确实是很方便:ICE比较稳定.可靠,调用返回速度低延迟,使用简单,学习曲线不是很陡 ...
- Js中的prototype的用法二
用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...
- Ubuntu 16.04 LTS制作本地源
平时apt-get install安装软件时,下载的deb文件都会存放在/var/cache/apt/archives/下,没有网络时就需要将这些deb制作成本地源.另外,如果在本机架一个简单的网络服 ...
- FMDB是iOS平台的SQLite数据库框架
1.FMDB简介 什么是FMDBFMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 为什么使用FMDB使用起来更加面向对象,省去了很多麻烦.冗余的C语言 ...
- JSF通过超链接传递参数到控制层
JSF通过超链接传输数据到控制层可以分为三个步骤: 1.首先将数据加入到超链接中.通过<h:link>标签加入一个超链接,然后加入<f:param>标签加入参数.示例代码如下: ...
- [转载]嵌入式linux下操作GPIO
本文转自:http://blog.csdn.net/mirkerson/article/details/8464231 在嵌入式设备中对GPIO的操作是最基本的操作.一般的做法是写一个单独驱动程序,网 ...
- Spring MVC 项目示例
Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架.Spring的web框架围绕DispatcherServlet设计, 作用是将请求分发到不同 ...