c++并归排序代码示例

#include <iostream>

#include <cstring>

#include <math.h>

using namespace std;
void mysort(int* a , int lo , int hi);
void mymerge(int* a , int lo , int mid , int hi);
int t[10] = {3,7,4,8,6,9,0,5,2,1};
int auk[10];
int main()
{
    mysort(t,0,10);
    for(int i = 0 ; i < 10 ; i++)
    {
        cout<<t[i];
    }
   return 0;

}

//递归过程

void mysort(int* a , int lo , int hi)
{
  if(lo>=hi)    return;
  int mid = lo + (hi - lo)/2 ;
  mysort(a , lo , mid);
  mysort(a, mid + 1 , hi);
  mymerge(a , lo , mid , hi);
}
//归并过程
void mymerge(int* a , int lo , int mid , int hi)
{
    int i = lo ;
    int j = mid + 1;
   for(int k = lo ; k <= hi ; k++)
   {
       auk[k] = a[k];
   }

   for(int k = lo ; k <= hi ; k++)
   {
       if(i > mid)    a[k] = auk[j++];
       else if( j > hi)    a[k] = auk[i++];
       else if(auk[i] > auk[j])     a[k] = auk[i++];
       else a[k] = auk[j++];
   }
}

猜你喜欢

转载自blog.csdn.net/betonme/article/details/79389476
今日推荐