前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >今日代码大赏 | Java 实现快速排序算法

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

作者头像
程序员鱼皮
发布2024-04-11 15:12:12
1440
发布2024-04-11 15:12:12
举报
文章被收录于专栏:鱼皮客栈鱼皮客栈

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

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

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

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

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

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

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

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

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

代码语言:javascript
复制
//用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));
  }
}

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

代码语言:javascript
复制
未排序的数组:
[8, 7, 2, 1, 0, 9, 6]
排序数组:
[0, 1, 2, 6, 7, 8, 9]

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

代码语言:javascript
复制
//小于符号更改为大于
if (array[j] >= pivot) {

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员鱼皮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档