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