遞歸與分治--快速排序算法

#include <iostream>
using namespace std;
void QuickSort(int a[],int begin,int end){
	if(begin<end){
		int pivot=a[begin];
		int l=begin;
		int r=end;
		while(l<r){//快速排序算法思想,最右邊小於pivot則把他放入a[l],然後l++,同理右側也一樣 
			while(l<r&&pivot<a[r]){
				r--;
			}
			a[l]=a[r];
			while(l<r&&pivot>=a[l]){
				l++;
			}
			a[r]=a[l];
		}
		a[l]=pivot;//把pivot放入左右兩個數組的中間位置 
		QuickSort(a,begin,l-1);//遞歸排序左邊的 
		QuickSort(a,l+1,end);//遞歸排序右邊的 
    }
    else
		return;
}

int main(){
	int a[6]={5,8,6,1,4,2};
	QuickSort(a,0,5);
	for(int i=0;i<6;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}

算法很簡單,不贅述,如果有疑問可以留言!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章