快速排序_c++
文解
快速排序正如其名,是一种排序速度较快的排序算法.
其核心思想:
- 取数组的第一个数,确定其在整个数组中的位置.
- 以刚刚的数值所确定的位置经数组分为两个部分.
- 再分别对两个部分进行以上两步操作.
- 重复以上三步,到整个数组有序位置.
图解
代码
void fastArray(short * pArray, short low, short height) {
short pos;
if (low < height) {
pos = serchPos(pArray, low, height);
fastArray(pArray, low, pos - 1);
fastArray(pArray, pos + 1, height);
}
}
short serchPos(short * pArray, short low, short height) {
short val = pArray[low];
while (low < height) {
while (low < height && pArray[height] > val) {
height --;
}
pArray[low] = pArray[height];
while (low < height && pArray[low] < val) {
low ++;
}
pArray[height] = pArray[low];
}
pArray[low] = val;
return low;
}