1 #include "stdafx.h"
2 #include <iostream>
3 #include <exception>
4 #include <stack>
5 using namespace std;
6
7 void Swap(int *lhs,int *rhs)
8 {
9 int temp = *lhs;
10 *lhs = *rhs;
11 *rhs = temp;
12 }
13
14 int Partition(int* Array,int begin,int end)
15 {
16 int ran = begin+ rand() % (end-begin+1);//生成一个从begin到end的随机数
17 Swap(&Array[ran],&Array[end]);
18 int key = Array[end];
19 int i = begin-1;
20 for(int j = begin;j != end;++j)
21 {
22 if(Array[j]<key)
23 {
24 ++i;
25 Swap(&Array[i],&Array[j]);
26 }
27 }
28 Swap(&Array[i+1],&Array[end]);
29 return i+1;
30 }
31 void QuickSort(int *arrlist,int beg,int end)
32 {
33 if(beg < end)
34 {
35 int index = Partition(arrlist,beg,end);
36 QuickSort(arrlist,beg,index-1);
37 QuickSort(arrlist,index+1,end);
38 }
39 }
40 int _tmain(int argc, _TCHAR* argv[])
41 {
42 int arr[]={1,2,3,10,6,7,8,5,11,4,9,14,0};
43 int LENGTH = sizeof(arr)/sizeof(int);
44 QuickSort(arr,0,LENGTH-1);
45 //快速排序之后的结果
46 for(int i = 0;i != LENGTH;++i)
47 cout<<arr[i]<<" ";
48 return 0 ;
49 }