const int MINNUMBER = -32767 ;
int find_sec_max( int data[] , int count)
{
int maxnumber = data[0] ;
int sec_max = MINNUMBER ;
for ( int i = 1 ; i < count ; i++)
{
if ( data[i] > maxnumber )
{
sec_max = maxnumber ;
maxnumber = data[i] ;
}
else
{
if ( data[i] > sec_max )
sec_max = data[i] ;
}
}
return sec_max ;
int max1 = a[0],max2 = a[0];
for(int i = 0;i <n;i++){
if(a[i]<max1 && a[i]>max2){
max2 = a[i];
}else if(a[i]>max1){
max1 = a[i];
}
}
就是比较大小而已,不要想复杂了 //先用快速排序进行排序
void qucikSort(int a[],int low,int high){
if(a==null || low > high)
return ;
int key = a[low];
int first = low;
int last = high;
while(first<last) {
while(first<last && a[last] > key )
last--;
a[first] = a[last];
while(first<last && a[first] < key)
first++;
a[last] = a[first];
}
a[first] = key;
qucikSort(a,low,first-1);
qucikSort(a,first+1,high);
}
//找出第二大的数字
int findSecondMax(int a[]){
if(a==null) return -1;
int low = 0;
int high = a.length-1;
qucikSort(a,low,high);
return a[high-2];
}
#include<stdio.h>
#include<stdlib.h>
#include<stdio.h>
int find_second_max(const int arr[], int length){
int max, second;
int i;
if(length < 2) {
printf("The size of array should be bigger than 2\n");
exit(-1);
}
arr[0] > arr[1] ? (max = arr[0], second = arr[1]) : (max = arr[1], second = arr[0]);
for(i = 2; i < length; i++){
if(arr[i] > max){
second = max;
max = arr[i];
} else if(arr[i] > second){
second = arr[i];
}
}
return second;
}
console.log(getSecond(arr));
int Find_second_max(int *arr,int len)
{
int
max=arr[0];
int second_max=max;
for (int
i=0;i<len;i++)
{
if(arr[i]>second_max)
{
if(arr[i]<max)
{
second_max=arr[i];
}
second_max=max;
max=arr[i];
}
}
return second_max;
}
int main()
{
int
arr[16]={19,2,3,43,5,6,7,89,97,10,15,12,13,14,65,16};
int
second_max=Find_second_max(arr,sizeof(arr)/sizeof(arr[0]));
printf("%d\n",second_max);
return 0;
}
}
//写一个函数找出一个整数数组中,第二大的数
#include <stdio.h>
int FindTwoMax(int a[],int len)
{
int first=0;
int k = 0;
int second=0;
for(int i=0;i<len;i++)
{
if(a[i]>first)
{
first=a[i];
k=i;
}
}
for(int j=0;j<len;j++)
{
if(a[j]>second)
{
if(k==j)continue;
second=a[j];
}
}
return second;
}
int main()
{
int ar[]={1,13,3,8,2};
int a=FindTwoMax(ar,5);
printf("second=%d",a);
return 0;
}
int Find_Second_Max(int data[],int n) { if(n<2) return -1; int max_num = max(data[0],data[1]); int sec_num = min(data[0],data[1]); for(int i=2;i<n;i++) { if(data[i]>=max_num); { sec_num = max_num; max_num = data[i]; } else if(data[i] > sec_num)//排除等于情况 sec_num = data[i]; } return sec_num; }