您的位置:首页 > 其它

递归实现快速排序

2009-11-10 22:05 141 查看
/*

    分裂:将数组分为两部分,前一部分小于poivt,后一部分大于

*/

int CRecursion::split(int ary[], int low, int high)

{

 int x = ary[low];

 int i = low;

 int k=0;

 CLibrary m_Library;

 for(k = low+1; k <= high; k++)

 {

  if(ary[k] < x)

  {

   i = i+1;

   m_Library.swap(ary[k], ary[i]);

  }

 }

 m_Library.swap(ary[low], ary[i]);

 return i;

}

/*

    调用split,用递归实现快速排序

*/

void CRecursion::split_sort(int ary[], int low, int high)

{

 if(low < high)

 {

     int k = split(ary, low, high);

     split_sort(ary, low, k-1);

     split_sort(ary, k+1, high);

 }

}

 

void main()

{

 /////////////////////////////////////////////

 ////////     递归实现快速排序     ////////////

 int ary[9] = {8, 3, 6, 2, 1, 9, 4, 5, 7};

 int low = 0, high = 9-1;

 CRecursion m_Recursion;

 m_Recursion.split_sort(ary, low, high);

 for(int i = low; i <= high; i++)

  cout << ary[i] << "  ";

 

 getchar();

 return 0;

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: