快速排序的實現

諸葛倫發表於2015-05-08


#include <iostream>

using namespace std;

int FindPos(int * a, int low, int high)
{
 int val = a[low];
 while (low < high)
 {
  while (low < high && a[high] >= val)  
   --high;

   a[low] = a[high];

   while (low < high && a[low] <= val)
    ++low;
   a[high] = a[low];
  }//終止while迴圈之後low和high一定是相等的
  a[low] = val;
  return low;
}

void QuickSort(int * a, int low, int high)
{
 int pos;
 if (low < high)
 {
  pos = FindPos(a, low, high);
  QuickSort(a, low, pos-1);
  QuickSort(a, pos + 1, high);
 }
}

int main()
{
 int a[6] = { 2, 1, 4, 5,0, 3 };
 int i;

 QuickSort(a, 0, 5);//第二個參數列示第一個元素的下標,第三個元素表示最後一個元素的下標
 for (i = 0; i <= 5; ++i)
 {
  cout << a[i] << endl;
 }

 system("pause");
 return(0);
}

相關文章