zoukankan      html  css  js  c++  java
  • 快速排序算法

    void quickSort(int s[], int l, int r) //返回调整后基准数的位置
    {
        int i = l, j = r;
        int tmp = s[l]; //s[l]即s[i]就是第一个坑
        while (i < j)
        {
            // 从右向左找小于x的数来填s[i]
            while(i < j && s[j] >= x) 
                j--;  
            if(i < j) 
            {
                s[i] = s[j]; //将s[j]填到s[i]中,s[j]就形成了一个新的坑
                i++;
            }
    
            // 从左向右找大于或等于x的数来填s[j]
            while(i < j && s[i] <= x)
                i++;  
            if(i < j) 
            {
                s[j] = s[i]; //将s[i]填到s[j]中,s[i]就形成了一个新的坑
                j--;
            }
        }
        //退出时,i等于j。将x填到这个坑中。
        s[i] = tmp;
    
        quickSort(a,l,i-1);
            quickSort(a,i+1,r);
    }

    那种左右两边都找到后,再交换的写法是错误的

  • 相关阅读:
    函数进阶-生成器
    函数进阶-列表生成式
    闭包
    命名空间
    内置方法
    函数
    squid清除缓存
    subprocess实现管道
    Python统计脚本行数(fileinput)
    fabric note
  • 原文地址:https://www.cnblogs.com/genggeng/p/6772980.html
Copyright © 2011-2022 走看看