您现在的位置是:首页 > 正文

快速排序java练习

2024-01-30 21:36:11阅读 0

原理:

快速排序是一种高效的排序算法,其基本思想是通过一趟排序将待排序列分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再分别对这两部分进行排序,最终得到一个有序序列。
其具体实现如下:
1.选取一个基准元素,通常选择第一个元素为基准;
2.从序列的右端开始向左扫描,找到第一个小于基准元素的元素,并将其交换到基准元素的位置上;
3.从序列的左端开始向右扫描,找到第一个大于基准元素的元素,并将其交换到步骤2中被交换的元素的位置上;
4.重复步骤2和3,直到左右指针相遇;
5.将左右指针相遇的位置的元素与基准元素交换;
6.对基准元素左边的子序列和右边的子序列分别递归地进行步骤1~5,直到整个序列有序。

图片: Alt

代码实现

// An highlighted block
var foo = 'bar';
public static void main(String[] args) {
        int[] array = {6,2,3,4,7,-1,-232,0};
        sort(array,0,array.length-1);
        System.out.println(Arrays.toString(array));

    }

    public  static  void  sort(int[] array ,int low,int high){
        //递归的边界条件
        if (low>=high){
            return;
        }
        //i,j
        int i = low;
        int j = high;
        //key
        int key = array[i];
        while (i<j) {
            //  3 3 4 5 8  如果不加 i<j  容易造成数组越界
            while (array[j] >= key &&j>i) {
                j--;
            }
            int t;
            t = array[j];
            array[j] = array[i];
            array[i] = t;
            //  1 3 4 5 8  如果不加 i<j  容易造成数组越界
            while (array[i] <= key &&i<j) {
                i++;
            }
            t = array[i];
            array[i] = array[j];
            array[j] = t;
        }
        //对基准左侧的集合进行重复操作
        sort(array,low,i-1);
        //对基准右侧的集合进行重复操作
        sort(array,i+1,high);
    }



网站文章

  • 现代浏览器内部机制 Part 4 | 事件

    现代浏览器内部机制 Part 4 | 事件

    原文:Inside Look at Modern Web Browser(part 4)[1]作者:Mariko Kosaka[2]译者:kyrieliu终于到最后一篇了!作为这个系列的...

    2024-01-30 21:36:05
  • MySQL触发器

    触发器含义在发生insert,update,delete等事件时,符合特定条件后,执行特定语句即为触发器。触发器操作创建触发器create trigger 触发器名称 begin或者after 触发事件 on 表名 for each row 执行语句;create trigger 触发器名称 begin或者after 触发事件 on 表名 for each row begi

    2024-01-30 21:35:59
  • SparkSQL项目

    SparkSQL项目

    YARN产生背景MapReduce1.X的问题:JobTracker的压力太大了;YARN的产生YARN的架构1个RM(ResourceManager)+N个(NodeManager)Resource...

    2024-01-30 21:35:30
  • 基于element-ui的table实现树级表格操作及单元格合并

    基于element-ui的table实现树级表格操作及单元格合并

    基于element-ui的table,在一张表内实现多级树状数据展示及同属性的单元格合并,并在表格内实现增删改操作。

    2024-01-30 21:35:21
  • 差分算法(用python语言实现)

    差分算法,易上手

    2024-01-30 21:35:14
  • 《美图数据统计分析平台架构演进》阅读有感

    《美图数据统计分析平台架构演进》阅读有感

    《美图数据统计分析平台架构演进》阅读有感数据统计是一个比较尴尬的事情,第一个它可能不是一个非常有技术含量的事情,对于技术人员的成长来说不是非常好。第二它可能是一个比较重复工作的事,需要解决一些简单的需求的重复工作。统计业务与技术碰撞这基本上是我自己亲身的经历,刚开始一个人做这一块的业务,会碰到一些有意思的点,可能分三个阶段,第一个阶段是在项目的初期,我们是怎么样去应对一些产品的初期需求...

    2024-01-30 21:34:45
  • unity 3.6在import package时只有custom package

    unity 3.6在import package时只有custom package

    【问题描述】下载的unity 3.6在import package时只有custom package没有其他包文件【解决方案】在asset store里搜索Standard Assets选择导入即可导入完成后在左下角的project assets中多了一个Standard Assets文件夹打开即可使用...

    2024-01-30 21:34:37
  • LLCC68寄存器模式开发-几个关键操作说明

    LLCC68寄存器模式开发-几个关键操作说明

    llcc68 lora模式寄存器说明

    2024-01-30 21:34:29
  • RxJava 两种生产和消费模式,(冷)cold和(热)hot

    RxJava目前有两种发布和订阅模式。

    2024-01-30 21:34:23
  • (pytorch进阶之路)四种Position Embedding的原理及实现

    (pytorch进阶之路)四种Position Embedding的原理及实现

    定义子函数,获得每个window中两两patch之间二维的位置偏差,使用torch.meshgrid函数,根据x轴和y轴范围得到网格每个点的x坐标和y坐标,将其堆叠,获取任何两个点之间的横轴与纵轴坐标...

    2024-01-30 21:33:56