资讯专栏INFORMATION COLUMN

算法学习之路,排序之快速排序(Java实现)

charles_paul / 995人阅读

摘要:接下来我来说明快速排序的思路以及实现的代码。快速排序思路首先是定义一个变量,把数组的第一个元素的值赋给,然后定义两个变量指向数组的第一个元素和最后一个元素。

今天突然想写个排序,以前写过,然后写了之后一直出错,然后自己百度了一下,看了别人写的方法,自己也尝试着写了一个。接下来我来说明快速排序的思路以及实现的代码。

快速排序思路:首先是定义一个变量key,把数组的第一个元素的值赋给key,然后定义两个变量start,end指向数组的第一个元素和最后一个元素。然后从后往前遍历,一直end--,知道下标为end的值小于key,就交换下标为start,end的值,然后再从前遍历,一直start++,直到下标为start的值大于key,就交换下标为start,end的值。这样,经过一次排序之后,小于key的出现在key的左边,大于key的出现在key的右边。然后再用递归对key的左右两边进行上述方法进行排序。

快速排序

代码:

//判断数组是否为空,数组元素是否为0
if (data.length < 1 || data == null) {
    return;
}

//头指针小于尾指针,则返回
if (start >= end) {
    return;
}

//数组不为空且元素个数大于0
boolean flag = true;
int low = start;
int high = end;
int key = data[low];
while (low < high) {
    //flag用来判断是否从下标为high的值与基准进行比较
    if (flag) {
        if (data[high] < key) {
            swmp(data, low, high);
            flag = false;
        } else {
            high--;
        }
    } else {
        //判断下标为low的值是否与基准进行比较。
        if (data[low] > key) {
            swmp(data, low, high);
            flag = true;
        } else {
            low++;
        }
    }
}
soft_quick(data, start, low - 1);
soft_quick(data, high + 1, end);


int temp = data[start];
data[start] = data[end];
data[end] = temp;



for (int index : data) {
    System.out.print(index + "	");
}
System.out.println();

最后是运行结果:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65911.html

相关文章

  • Javag工程师成神(2019正式版)

    摘要:结构型模式适配器模式桥接模式装饰模式组合模式外观模式享元模式代理模式。行为型模式模版方法模式命令模式迭代器模式观察者模式中介者模式备忘录模式解释器模式模式状态模式策略模式职责链模式责任链模式访问者模式。 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新技术知识、完善知识体系 v2.0 2019-02-19 结构...

    Olivia 评论0 收藏0
  • 优秀程序员都应该学习的 GitHub 上开源的数据结构与算法项目

    摘要:强烈推荐上值得前端学习的数据结构与算法项目,包含图的演示过程与视频讲解。该仓库包含了多种基于的算法与数据结构,提供进一步阅读的解释和链接。数据结构和算法必知必会的个代码实现。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法为王。想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手;只有内功深厚者,前端之路才会走得...

    cheukyin 评论0 收藏0
  • 程序猿修仙--算法快速排序到底有多快

    摘要:可见快速排序不是稳定的排序。在这种小数组的情况下,其实一些基础排序算法反而比快速排序要快。当一个数组为无序并且重复元素不多时候,也适合快速排序。 分治思想 关于排序,江湖盛传有一种分治思想,能大幅度提高排序心法的性能。所谓分治,即:化大为小,分而治之。达到治小而治大的成效。多年来基于分治思想衍生出多种排序心法,然万变不离其宗!虽然江湖上算法内功繁多,但是好的算法小编认为必须符合以下几...

    felix0913 评论0 收藏0
  • 程序猿修仙--算法快速排序到底有多快

    摘要:可见快速排序不是稳定的排序。在这种小数组的情况下,其实一些基础排序算法反而比快速排序要快。当一个数组为无序并且重复元素不多时候,也适合快速排序。 分治思想 关于排序,江湖盛传有一种分治思想,能大幅度提高排序心法的性能。所谓分治,即:化大为小,分而治之。达到治小而治大的成效。多年来基于分治思想衍生出多种排序心法,然万变不离其宗!虽然江湖上算法内功繁多,但是好的算法小编认为必须符合以下几...

    trigkit4 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<