专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
内蒙古市场监管  ·  内蒙古地理标志保护工作取得实破性进展 ·  昨天  
内蒙古市场监管  ·  内蒙古地理标志保护工作取得实破性进展 ·  昨天  
企业专利观察  ·  又一起10亿元索赔!天合光能再诉阿特斯 ·  3 天前  
企业专利观察  ·  又一起10亿元索赔!天合光能再诉阿特斯 ·  3 天前  
51好读  ›  专栏  ›  程序员鱼皮

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

程序员鱼皮  · 公众号  ·  · 2024-04-11 13:31

正文

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

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

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

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

前两天的文章投票,我看到投“ 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 
       //将所有元素与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 
       //选择轴位置并将所有元素放小
       //左轴大于轴,右轴大于轴
      int pi = partition(array, low, high);

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

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

  public static void main(String args[]) {

    //创建一个未排序的数组
    int[] data = { 8721096 };
    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 使用递归反转句子







请到「今天看啥」查看全文