ITPub博客

首页 > 数据库 > 数据库开发技术 > 今日代码大赏 | Java 实现快速排序算法

今日代码大赏 | Java 实现快速排序算法

原创 数据库开发技术 作者:程序员鱼皮 时间:2024-04-11 13:31:13 0 删除 编辑

今天依旧老规矩,我们先来一段每日古典回顾,为生活增添一丝趣味,感受古人的毅力和智慧。

今日的古典回忆是:“谁能九层台,不用累土起!”

这句话出自唐代诗人王之涣的《登鹳雀楼》,这句诗的意思是,有谁能够建造一座九层高的楼台,却不是从堆积一层层的土开始的呢?

所以我们无论是在学习、工作还是生活的其他方面,都需要我们一步一个脚印,扎实地做好每一件事情,才能最终取得成功。

前两天的文章投票,我看到投“ so easy,毫无压力!”的较多,所以今天我们继续上点难度,回忆下用 Java 实现快速排序算法。

是不是看到这里小伙伴们有点熟悉呢。没错,前两天我们分析了 Java 实现冒泡排序算法。

有需要回忆的 Java 实现冒泡排序算法可以点击下方链接,直接跳转哦!

https://mp.weixin.qq.com/s/k5iKu6mdrdUtJFTmbGavhA

Java 程序实现快速排序算法示例代码:

//用Java快速排序
import java.util.Arrays;

class Main {

  //根据数据轴划分数组
  int partition(int array[], int low, int high) {

    //选择最后一个元素作为轴
    int pivot = array[high];

    //初始化第二个指针
    int i = (low - 1);

    //把小于轴的元素放在左边
    //大于枢轴右侧的枢轴
    for (int j = low; j < high; j++) {

       //将所有元素与pivot进行比较
       //交换大于pivot的元素
       //元素小于pivot
       //按降序排序
      // if (array[j] >= pivot)
      if (array[j] <= pivot) {

        //第二个指针递增。
        //将较小的元素替换为较大的元素
        i++;
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
      }
    }

        //所以左边的元素更小
        //右边的元素大于pivot
    int temp = array[i + 1];
    array[i + 1] = array[high];
    array[high] = temp;
    return (i + 1);
  }

  void quickSort(int array[], int low, int high) {
    if (low < high) {

       //选择轴位置并将所有元素放小
       //左轴大于轴,右轴大于轴
      int pi = partition(array, low, high);

      //对轴左侧的元素进行排序
      quickSort(array, low, pi - 1);

      //对轴右侧的元素进行排序
      quickSort(array, pi + 1, high);
    }
  }

  public static void main(String args[]) {

    //创建一个未排序的数组
    int[] data = { 8, 7, 2, 1, 0, 9, 6 };
    int size = data.length;

    //创建Main类的对象
    Main qs = new Main();

    //将第一个和最后一个索引传递给数组
    qs.quickSort(data, 0, size - 1);
    System.out.println("排序数组: ");
    System.out.println(Arrays.toString(data));
  }
}

运行该程序时,输出结果为:

未排序的数组:
[8, 7, 2, 1, 0, 9, 6]
排序数组:
[0, 1, 2, 6, 7, 8, 9]

在这里,数组的元素按升序排序。如果我们想要按降序对元素进行排序,那么在 Partition() 方法的 for 循环中,我们可以将代码更改为:

//小于符号更改为大于
if (array[j] >= pivot) {

今天的代码大赏到此结束,关于 Java 程序实现快速排序算法,你学会了吗?

欢迎在评论区留下自己的看法。

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/plyxee

在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~

往期推荐

今日代码大赏 | Java 使用递归反转句子

今日代码大赏 | Java 实现字符串转为日期

今日代码大赏 | Java 实现冒泡排序

今日代码大赏 | Java 打印数组

今日代码大赏 | Java 反转数字

原文作者:程序员鱼皮;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-12-20

  • 博文量
    330
  • 访问量
    151715