标签:
#include <iostream> using namespace std; //最小值和最大值的求解,时间复杂度最多是3[n/2],依据算法导论第九章. void swap(int &a,int &b) { int temp = a; a = b; b = temp; } void Grial(int a[],int n) { int i = 0; if(a[i]>a[i+1]) { swap(a[i],a[i+1]); } for(int j = i+2;j<n-1;j+=2) { if(a[j]>a[j+1]) { if(a[j]>a[1]) swap(a[j],a[1]); if(a[j+1]<a[0]) swap(a[j+1],a[0]); } else { if(a[j]<a[0]) swap(a[j],a[0]); if(a[j+1]>a[1]) swap(a[j+1],a[1]); } if(n%2!=0 && j==n-3) { if(a[n-1]<a[0]) swap(a[n-1],a[0]); if(a[n-1]>a[1]) swap(a[n-1],a[1]); break; } } cout<<a[0]<<endl; cout<<a[1]<<endl; } int main() { int a[]={5,4,3,2,8,0,8,9,76,6,1000}; Grial(a,11); return 0; }
C++数组求最大值及最小值最快方法(3[n/2]的时间效率)
标签:
原文地址:http://blog.csdn.net/liuhuiyan_2014/article/details/45485067