有一17个元素的整形数组
寻找最大元素和次大元素
#include "stdio.h"
#include "conio.h"
void maxmin(int a[],int n,int *max,int *min)
{
int a1[5],a2[5];
int i,j,k=0;
int max1,max2,min1,min2;
if(n==1)
*max=*min=a[0];
else if(n==2)
{
if(a[0]>a[1])
{
*max=a[0];
*min=a[1];
}
else
{
*max=a[1];
*min=a[0];
}
}
else
{
for(i=0;i<n/2;i++)
a1[i]=a[i];
for(j=i;j<n;j++)
a2[k++]=a[j];
maxmin(a1,n/2,&max1,&min1);
maxmin(a2,(n-n/2),&max2,&min2);
if (max1 > max2)
*max = max1;
else
*max = max2;
if (min1 > min2)
*min = min2;
else
*min = min1;
}
}
main()
{
int a[10]={1,12,21,4,57,78,95,43,100,23};
int max,min;
maxmin(a,10,&max,&min);
printf("%d %d",max,min);
getch();
}
尽量利用语言已有的函数。
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char* argv[])
{
int intar[] = {5,8,2,6,4,3,11,10,9,7}, intSize = sizeof(intar)/sizeof(int);
sort(&intar[0], &intar[intSize]);
cout << intar[intSize-1] << " " << intar[intSize-2] << endl;
return 0;
}
觉得如果还不是很熟练算法思想的时候就多练习不用现有的排序函数,锻炼思维,但是如果掌握以后直接用algorithm或则stl可以简单解决问题,多好~!