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

    快速排序是冒泡排序的优化算法,其步骤是:
    1、找到一个基准数p(选中间随机数可以避免快速排序最坏情况)
    2、设置左右两个指针,然后左指针l往右找比基准数大的(或相等)的数,右指针r往左找比基准数小的(或相等)的数,两个指针交换
    所在位置的元素后,继续搜索直到左右指针相遇(即跳出循环条件 l=r)
    注:如果循环过程出现了l=p(或r=p),则令r--(或l++),避免死循环
    3、跳出循环后,此时l=r,让l++,p-- 这样就不会出现栈溢出错误 再接着对数组(left,r)和(l,right)进行递归即可

    完整代码如下:

            public static void quickSort(int[] arr, int left, int right)
            { 
                int l = left;//左指针
                int r = right;//右指针
                int p = arr[(l + r) / 2];//记录基准值
                while (l < r)//跳出循环时 l==r 以此为界将数组分为两组 分别进行递归
                {
                    //定义中间变量用于交换
                    int temp = 0;
                    while (arr[l] < p && l >= 0)//左指针在比基准值大或相等的值停下
                    {
                        l++;
                    }
                    while (arr[r] >p && r >= 0)//右指针在比基准值小或相等的值停下
                    {
                        r--;
                    }
                    temp = arr[l];
                    arr[l] = arr[r];
                    arr[r] = temp;
                    if (arr[l] == p)
                    {
                        r--;
                    }
                    if (arr[r] == p)
                    {
                        l++;
                    }
                }
                    l++;
                    r--;
                if (l < right)
                {
                    quickSort(arr, l, right);
                }
                if (r > left)
                {
                    quickSort(arr, left, r);
                }
            }
  • 相关阅读:
    查询
    常用代码块模板,get,load区别,session.get(,)参数解释,session方法总结
    hibernate.cfg.xml配置文件
    request,session,application,三者比较
    maven 环境搭建
    selenium环境搭建
    makedown使用语法
    selenium浏览器操作
    selenium元素操作
    Selenium 元素定位
  • 原文地址:https://www.cnblogs.com/TheLin/p/13876885.html
Copyright © 2011-2022 走看看