首页 > 其他分享 >快速排序

快速排序

时间:2023-03-22 10:45:40浏览次数:30  
标签:arr right int key 排序 快速 left

给定一个数组 [3, 5, 2, 1, 6, 2, 5, 8]

快速排序就是利用不停分割的思想将数组分块排序

首先选定一个基准,即key,这里一般选择最左边的,我们从两边开始移动指针分别找到小于基准和大于基准的数,进行交换

例如这个,left开始找到第一个大于3的数即5,right找到第一个小于3的数即2,进行交换

public int partition(int[] arr, int left, int right){
    int key = left;
    while(left < right){
        while(left < right && arr[right] > arr[key])
            right--;
        while(left < right && arr[left] < arr[key])
            left++;
        // swap请自行实现
        swap(arr[left], arr[right]);
     }
    swap(arr[key], arr[right]);
    return left;
}

之后对每次分的区进行再分区排序

public void quickSort(int[] arr, int left, int right){
    // 只有一个数就不用排序了
    if(left >= right)
        return;
    int key = partition(arr, int left, int right);
    quickSort(arr, left, key - 1);
    quickSort(arr, key + 1, right);
}

 

标签:arr,right,int,key,排序,快速,left
From: https://www.cnblogs.com/xie213/p/17242763.html

相关文章

  • IDEA 如何快速重新导入 Maven 依赖
    当Module依赖的其它Module(需在IDEA内被加载)发生变更后,可以通过MavenHelper插件的Reimport功能快速重新导入步骤如下:使用Alt+Ctrl+Shift+R打开......
  • 排序-冒泡
    冒泡排序简介冒泡排序属于一种交换排序,基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置。交换排序的特点是:将键值较大的记录向......
  • 快速排序
    快速排序算法思想找一个主元x从左边找>=x的数,从右边找<=x的数然后交换位置递归地处理左右两部分时间复杂度O(nlogn)代码voidquick_sort(intq[],intl......
  • Vue2 快速上手
    1.声明式渲染通过{{}}将数据渲染到页面:<body><divid="app">{{message}}</div></body><script>varapp=newVue({el:'#app',......
  • 开源API网关APINTO:快速入门
    公司领导对选型APINTO网关比较满意,自然少不了体验一下。首先来体验一下API网关最基本的功能:转发请求。Apinto快速入门从Apinto官网扒了个配置流程图,Apinto网关控制台主......
  • java实现多字段排序(普通对象List和MapList)
    publicclassSortTest{publicstaticvoidmain(String[]args){//普通对象listsortVOList();//mapListsortMapList();......
  • WebSocket + Redis简单快速实现Web网站单设备登录功能
    大家好,我是小悟1、写在前面的话生活中,我们在使用一些APP的时候,有过一种体验,就是在A手机上登录账号,因为某些原因需要在B手机上登录,然后就会在A手机上看到类似"该账号在其他设......
  • Jenkins核心功能快速上手Jenkins企业级持续集成持续部署CICD
     Jenkins核心功能快速上手Jenkins企业级持续集成持续部署CICD主要负责容器云平台产品架构及设计.8年工作经验,有着企业级存储,云计算解决方案相关理解.关注于微......
  • Treemap按key和value降序排序
    Treemap是一种根据键排序的数据结构,可以通过重载它的比较器来按照值排序。要按键排序,可以使用默认的比较器,而要按值排序,可以创建一个自定义的比较器并将其传递给treemap的......
  • orcad 快速差走器件的两种方法
    第一种方法:适用于整个原理图操作    第二种方法:使用与某张原理图操作     ......