您的位置:首页 > 其它

快速排序

2015-08-09 15:00 309 查看
参考http://blog.csdn.net/morewindows/article/details/6684558

我的代码存档-快排
void sort(int *array, int left, int right)
{
    //退出条件
    if(left >= right)
    {
        return;
    }
    
    //存储left和right,并把最左值给x
    int i = left;
    int j = right;
    int x = array[left];
    
    while(i < j)
    {
        //array[i]上有一个坑,用右边数字添坑
        while(i < j && x >= array[j])
        {
            j--;
        }
        array[i] = array[j];
        
        //array[j]上有一个坑,用左边第i个数字添坑
        while (i < j && x <= array[i])
        {
            i++;
        }
        array[j] = array[i];
    }
    //左边第i个数字有坑,用x添坑
    array[i] = x;
    
    //把左右两边分区,分别低柜调用sort
    sort(array, left, i - 1);
    sort(array, i + 1, right);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: