分治算法求数组中最大元素位置的算法

分治算法求数组中最大元素位置的算法:

#include <iostream>
int Max(int a[], int low, int high);

void main()
{
 int a[10], m;
 for(int i=0;i<10;i++)
  scanf("%d", &a[i]);
 m=Max(a, 0, 9);
 printf("%d\n", m);

}
/*********************************************************************************
*分治算法求数组中最大元素算法,注意:若数组有n个元素,high=n-1,*
*否则运行结果不正确,谨记数组下标从0开始。                                   *
*********************************************************************************/ 
int Max(int a[], int low, int high)
{
 int mid, max, max1, max2;
 if(low==high)
  return low;
 else
 {
  mid=(low+high)/2;
  max1=Max(a, low, mid);
  max2=Max(a, mid+1, high);
  max=a[max1]>a[max2]?max1: max2;
  return max;
 }
}

//运行结果:
//1 9 5 6 3 7 8 4 2 0
//1
//Press any key to continue

posted on 2011-06-30 15:48  carekee  阅读(1896)  评论(0编辑  收藏  举报