1. 首页
  2. 软件开发
  3. 快速排序实现

快速排序实现

  • 发布于 2024-09-21
  • 0 次阅读

用到的方法:递归,分治策略

代码主体:

import java.util.Arrays;
//快速排序
public class kuaisupaixv {
    public static void main(String[] args) {
       //定义要排序的数组
        int [] ary={5,78,21,951,41,4125};
        System.out.println(Arrays.toString(ary));
       //调用封装的递归函数,给调用的封装赋值
        kuaipai(ary,0, ary.length-1);
        //输出
        System.out.println(Arrays.toString(ary));
    }
   //封装递归函数
    public static void kuaipai(int []ary,int zuo,int you){
      //这个if是递归结束的判断,如果两个指针相等就结束递归
        if(zuo<you) {
          //定义low和hight为两个指针,low从左到右,hight从右到左
            int low = zuo, hight = you;
            //把左边第一个数当作基准数保护起来
            int base = ary[low];
          //当两个指针没相遇时循环
            while (low < hight) {
               //当两个指针没相遇且右边指针的数大于基准数时
                while (low < hight && ary[hight] > base) {
                    //右边指针向左移动一位
                    hight--;
                }
                //否则就将右边指针的数赋给左指针
                ary[low] = ary[hight];
                //当两个指针没相遇且左边指针的数小于基准数时
                while (low < hight && ary[low] < base) {
                  //左指针向右移一位
                    low++;
                }
               //否则将左指针的数赋给右指针的
                ary[hight] = ary[low];
            }
            //当两个指针相遇时,将基准数赋给两指针同时指向的数
            ary[low] = base;
           //用递归的方法继续做排好位置的基准数左边的数
            kuaipai(ary, zuo, low - 1);
            //用递归的方法继续做排好位置的基准数右边的数
            kuaipai(ary, low + 1, you);
        }
    }
}

输出结果:

[5, 78, 21, 951, 41, 4125]
[5, 21, 41, 78, 951, 4125]

Process finished with exit code 0


原文链接: https://blog.csdn.net/daibadetianshi/article/details/137179823