#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;
}