快速排序採用的思想是分治思想,是在冒泡排序的基礎上進行的改進
快速排序是找出一個元素(理論上能夠隨便找一個)做爲基準(pivot),而後對數組進行分區操做,使基準左邊元素的值都不大於基準值,基準右邊的元素值 都不小於基準值,如此做爲基準的元素調整到排序後的正確位置。遞歸快速排序,將其餘n-1個元素也調整到排序後的正確位置。最後每一個元素都是在排序後的正 確位置,排序完成。因此快速排序算法的核心算法是分區操做,即如何調整基準的位置以及調整返回基準的最終位置以便分治遞歸。
int quicksort(vector<int> &v, int left, int right){ if(left < right){ int key = v[left]; int low = left; int high = right; while(low < high){ while(low < high && v[high] > key){
high--;
}
v[low] = v[high]; while(low < high && v[low] < key){
low++;
}
v[high] = v[low];
}
v[low] = key;
quicksort(v,left,low-1);
quicksort(v,low+1,right);
}
}
外排序:
http://baike.baidu.com/view/1368718.htm