1.:采用分治策略。 时间复杂度o(nlogn),效率较高,但不稳定
2.算法思想:
1.选取第一个数作为基准
2.将比基准小的数放在前面,比基准大的放在后面
3.对左右区间重复第二步,直到各个区间只有一个数
3.实例数据代入:
难点:
- 判断什么时候结束?当begin>=end时
- 运行过程:先从后向前找,再从前向后找
需要一个在后面变量end,往前移动,直到碰到比基准小的数后才停止,随后把该值与first对应值交换
候需要一个在前的变量first,他往前移动,直到碰到比基准大的数后才停止,随后把该值与fend对应值交换
4..程序
void QuickSort(int* arr,int low,int high){
if (low>= high) {
return;
}
int first = low, last = high, key = arr[first];
while (first<last)
{
while (first<last&&arr[last]>=key) {
last--;
}
if (first<last) {
arr[first++] = arr[last];
}
while (first<last&&arr[first]<key)
{
first++;
}
if (first<last) {
arr[last--] = arr[first];
}
}
arr[first] =key ;
QuickSort(arr,low,first-1);
QuickSort(arr, first+1, high);
}