快速排序_c++

快速排序_c++


GitHub

文解

快速排序正如其名,是一种排序速度较快的排序算法.
其核心思想:

  • 取数组的第一个数,确定其在整个数组中的位置.
  • 以刚刚的数值所确定的位置经数组分为两个部分.
  • 再分别对两个部分进行以上两步操作.
  • 重复以上三步,到整个数组有序位置.

图解

代码

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;
}
posted @ 2017-03-17 10:52  旭宝爱吃鱼  阅读(384)  评论(0编辑  收藏  举报