今天中午午休时候突然有同学造访我宿舍随之讨论起二叉树深度算法也是醉了,吓得我赶快默写了一遍快排。
最近好多人忙着练习算法和数据结构应付机试,趁着这股气氛自己再学习一个。
#include <iostream>
using namespace std;
int num[10]={5,2,4,6,8,1,10,7,6,-1};
int partition(int low,int high)
{
int pivotkey=num[low];
while (low<high){
while(num[high]>pivotkey && low < high) high--;
if(low == high) break;
num[low]=num[high];
while(num[low]<=pivotkey&&low<high) low++;
if(low==high) break;
num[high]=num[low];
}
num[low]=pivotkey;
return low;
}
void QSort(int low,int high)
{
if(low < high){
int pivot=partition(low,high);
QSort(low,pivot-1);
QSort(pivot+1,high);
}
}
int main()
{
QSort(0,9);
for(int i=0;i<10;i++)
cout<<num[i]<<"\t";
}