寻找最大元和最小选
来源:互联网 发布:淘宝怎么留言卖家 编辑:程序博客网 时间:2024/06/08 19:13
#include<iostream>
#include<cmath>
using namespace std;
void fileArray(int array[], int len){
for(int i=0;i<len;i++){
array[i]=rand()%10000;
}
}
void printArray(int array[], int len){
for(int i=0;i<len;i++){
cout<<array[i]<<" ";
if((i+1)%10==0){
cout<<endl;
}
}
}
//寻找最大元和最小元
void findMaxAndMin(int array[], int len){
int max,min;
if(len<=0){
return;
}else if(len==1){
max=array[0];
min=array[0];
cout<<"min:"<<min<<" max:"<<max<<endl;
return;
}
int i=0;
if(len%2==0){
if(array[0]>=array[1]){
max=array[0];
min=array[1];
}else{
max=array[1];
min=array[0];
}
i=i+2;
}else{
max=array[0];
min=array[0];
i=i+1;
}
for(;i<len;i=i+2){
if(array[i]>=array[i+1]){
if(array[i]>max){
max=array[i];
}
if(array[i+1]<min){
min=array[i+1];
}
}else{
if(array[i+1]>max){
max=array[i+1];
}
if(array[i]<min){
min=array[i];
}
}
}
cout<<"min:"<<min<<" max:"<<max<<endl;
}
//寻找第二大的元素
int findSecondMin(int array[], int len){
if(len<=1){
return -1;
}
int min, secondMin;
if(array[0]<=array[1]){
min=array[0];
secondMin=array[1];
}else{
min=array[1];
secondMin=array[0];
}
for(int i=2;i<len;i++){
if(array[i]<min){
secondMin=min;
min=array[i];
}else if(array[i]>min){
if(array[i]<secondMin){
secondMin=array[i];
}
}
}
return secondMin;
}
int partition(int array[], int low, int high){
int key=array[high];
int i=low-1;
for(int j=low;j<=high;j++){
if(array[j]>key){
i++;
int temp=array[j];
array[j]=array[i];
array[i]=temp;
}
}
int temp=array[i+1];
array[i+1]=array[high];
array[high]=temp;
return (i+1);
}
//快速排序
void quickSort(int array[], int low, int high){
if(low<high){
int mid=partition(array,low,high);
quickSort(array,low,mid-1);
quickSort(array,mid+1,high);
}
}
int main(){
const int size=10000;
int array[size];
fileArray(array,size);
printArray(array,size);
int secondMin=findSecondMin(array,size);
quickSort(array,0,size-1);
printArray(array,size);
cout<<"The second min value:"<<secondMin<<endl;
return 0;
}
#include<cmath>
using namespace std;
void fileArray(int array[], int len){
for(int i=0;i<len;i++){
array[i]=rand()%10000;
}
}
void printArray(int array[], int len){
for(int i=0;i<len;i++){
cout<<array[i]<<" ";
if((i+1)%10==0){
cout<<endl;
}
}
}
//寻找最大元和最小元
void findMaxAndMin(int array[], int len){
int max,min;
if(len<=0){
return;
}else if(len==1){
max=array[0];
min=array[0];
cout<<"min:"<<min<<" max:"<<max<<endl;
return;
}
int i=0;
if(len%2==0){
if(array[0]>=array[1]){
max=array[0];
min=array[1];
}else{
max=array[1];
min=array[0];
}
i=i+2;
}else{
max=array[0];
min=array[0];
i=i+1;
}
for(;i<len;i=i+2){
if(array[i]>=array[i+1]){
if(array[i]>max){
max=array[i];
}
if(array[i+1]<min){
min=array[i+1];
}
}else{
if(array[i+1]>max){
max=array[i+1];
}
if(array[i]<min){
min=array[i];
}
}
}
cout<<"min:"<<min<<" max:"<<max<<endl;
}
//寻找第二大的元素
int findSecondMin(int array[], int len){
if(len<=1){
return -1;
}
int min, secondMin;
if(array[0]<=array[1]){
min=array[0];
secondMin=array[1];
}else{
min=array[1];
secondMin=array[0];
}
for(int i=2;i<len;i++){
if(array[i]<min){
secondMin=min;
min=array[i];
}else if(array[i]>min){
if(array[i]<secondMin){
secondMin=array[i];
}
}
}
return secondMin;
}
int partition(int array[], int low, int high){
int key=array[high];
int i=low-1;
for(int j=low;j<=high;j++){
if(array[j]>key){
i++;
int temp=array[j];
array[j]=array[i];
array[i]=temp;
}
}
int temp=array[i+1];
array[i+1]=array[high];
array[high]=temp;
return (i+1);
}
//快速排序
void quickSort(int array[], int low, int high){
if(low<high){
int mid=partition(array,low,high);
quickSort(array,low,mid-1);
quickSort(array,mid+1,high);
}
}
int main(){
const int size=10000;
int array[size];
fileArray(array,size);
printArray(array,size);
int secondMin=findSecondMin(array,size);
quickSort(array,0,size-1);
printArray(array,size);
cout<<"The second min value:"<<secondMin<<endl;
return 0;
}
0 0
- 寻找最大元和最小选
- 寻找最大数和最小数
- 分治法 求最大元和最小元 Java语言
- 【分治法】求数组的最大元和最小元
- 最大最小元问题
- 同时寻找最大数和最小数的最优算法
- 利用最大堆和最小堆在线寻找中位数
- 同时寻找最大数和最小数的最优算法
- 寻找一个数组中的最大和最小数
- 分治与递归:寻找最大元问题
- 寻找最小(最大)的k个数
- 寻找矩阵行最大列最小元素
- nyoj 448 寻找最大数、最小数
- 算法导论第九章例题之寻找最大数和最小数优化版
- 同时寻找一个数组中的最大元素和最小元素--你会有所收获
- 同时寻找最大数和最小数的最优算法 第二大数
- 二叉查找树的介绍与理解(插入,删除,寻找,最大和最小查找)
- 同时寻找最大数和最小数的最优算法 第二大数
- 自定义ios7标题栏和状态栏
- 整数加复数,复数加整数,
- 冒泡排序笔记
- POJ 2369 Permutations
- maven学习地址
- 寻找最大元和最小选
- Ubuntu中root用户和user用户的相互切换
- Linux多线程编程(3)
- 学做酷炫有爱的免费网页,学习 Github Page 教你分分钟搭建自己的博客
- UI类图
- 算法导论之最长递增子序列
- keepalived+nginx双机热备+负载均衡
- Sublime 2 如何配置Java运行环境
- tomcat原理及实现-----tomcat的过滤器(第三篇)