快速排序采用的思想是分治思想,是在冒泡排序的基础上进行的改进
快速排序是找出一个元素(理论上能够随便找一个)做为基准(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