1 #include<iostream> 2 using namespace std; 3 //快速排序 4 void Quicksort(int a[], int low, int high) 5 { 6 if (low >= high) 7 return; 8 int first = low; 9 int last = high; 10 int key = a[first]; 11 while (first < last) 12 { 13 while (first < last&&a[last] >= key) 14 { 15 --last; 16 } 17 a[first] = a[last] ; 18 while (first < last&&a[first] <= key) 19 { 20 ++first; 21 } 22 a[last] = a[first]; 23 } 24 a[first] = key; 25 Quicksort(a, low, first - 1); 26 Quicksort(a, first + 1, high); 27 } 28 int main() 29 { 30 int a[10]; 31 for (int i = 0; i < 10; i++) 32 cin >> a[i]; 33 for (auto t : a) 34 cout << t << " "; 35 cout << endl; 36 Quicksort(a, 0,9);// 快速排序 37 for (auto t : a) 38 cout << t << " "; 39 cout << endl; 40 system("pause"); 41 return 0; 42 }
1 #include<iostream> 2 using namespace std; 3 int partition(int data[], int length, int start, int end) 4 { 5 if (data == NULL || length <= 0 || start < 0 || end >= length) 6 throw new exception("Invalid Parameters"); 7 int index = rand() % (end - start + 1) + start; 8 9 swap(data[index], data[end]); 10 int small = start - 1; 11 12 for (index = start; index < end; ++index) 13 { 14 if (data[index] < data[end]) 15 { 16 17 ++small; 18 if (small != index) 19 { 20 swap(data[index], data[small]); 21 } 22 } 23 } 24 ++small; 25 swap(data[small], data[end]); 26 return small; 27 } 28 void quicksort(int data[], int length, int start, int end) 29 { 30 if (start == end) 31 return; 32 int index = partition(data, length, start, end); 33 if (index > start) 34 quicksort(data, length, start, index - 1); 35 if (index < end) 36 quicksort(data, length, index + 1, end); 37 } 38 int main() 39 { 40 int data[4] = { 2, 5, 2, 3 }; 41 cout << partition(data, 4, 0, 3) << endl; 42 /*quicksort(data, 4, 0, 3); 43 for (int i = 0; i < 4; i++) 44 cout << data[i] << endl;*/ 45 system("pause"); 46 return 0; 47 }