資料結構排序演算法之快速排序
阿新 • • 發佈:2019-01-24
快速排序
快速排序是運用遞迴的思想, 選擇一箇中間值,然後把陣列中大於這個中間值得放在右邊,小於的放在左邊,然後遞迴排序左邊和右邊地陣列,知道左邊和右邊地陣列個數為1#include<iostream> using namespace std; void swap(int arr[], int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } void QuickSort(int arr[], int left, int right) { //取一個數為基準,大於這個基準的放在右邊,小於這個數的放在左邊 if(left < right) { int temp = arr[left];//基準取最左邊的數 int i = left; int j = right; while(i < j) { while(i < j && arr[j] >= temp) j--; if(i<j) swap(arr,i,j); while(i < j && arr[i] <= temp) i++; if(i < j) swap(arr,i,j); } arr[i] = temp; QuickSort( arr,left, i -1); QuickSort(arr, i + 1, right); } } int main() { int arr[] = {34, 65, 12, 43, 67, 5, 78, 10, 3, 70}; int len = sizeof(arr)/ sizeof(int); cout << "The original array are: " <<endl; for(int i = 0; i < len; i++) cout << arr[i] << ","; cout << endl; QuickSort(arr, 0, len - 1); cout <<"The sorted arr are: " << endl; for(int j = 0; j < len; j++) cout << arr[j] << ","; cout << endl; system("pause"); return 0; }