java 数组排序(冒泡排序、快速排序、简单排序)

2023-11-09

目录

1、冒泡排序

2、快速排序

3、简单排序


1、冒泡排序

简介:

(1)循环遍历数组,判断相邻两个元素大小如果满足条件list[x]>list[x+1],则将两个元素位置对换。

(2)重复步骤(1),判断初始元素向右依次递减

(3)一般有两层循环,外循环循环次数为数组length,内循环次数依次递减

(4)时间复杂度为O(n)~O(n^2)

实现案例:

public void bubbleSort(int arr[]){
    for (int j=0;j<arr.length;j++){       // 第一轮循环
        for(int i=0;i<arr.length-1-j;i++){// 内循环随着j值变化递减
            if (arr[i]>arr[i+1]){         
            // 判断相邻的两个元素,如果前一个元素大于后一个元素,则两个元素交换值
                arr[i]=arr[i]+arr[i+1];
                arr[i+1]=arr[i]-arr[i+1];
                arr[i]=arr[i]-arr[i+1];
            }
        }
    }
}

2、快速排序

简介:

(1)将对象数组第一个元素值作为基数值,

定义一个left指针从左遍历数组判断元素是否大于基数,若大于将元素移至右边,若小于反之;

定义一个right指针从右边遍历数组判断元素是否小于基数,若小于将元素移至右边,若大于反之;

(2)将数据左右两边的组数作为新的数组对象递归调用执行(1)步骤,直到left指针和right指针指向同一元素。

(3)时间复杂度为O(nlogn)~O(n^2)

实现案例: 

public void quickSort(int[] array,int left,int right){
    if(left<right){
        int int1=left;
        int int2=right;          //取最左边的元素为基数
        int pivot=array[int1];   
        while (left<right){      //大于基数的元素放右边,小于基数的元素放左边
            while (left<right&& array[right]>=pivot){
                right--;
            }
            array[left]=array[right];
            while (left<right&&array[left]<=pivot){
                left++;
            }
            array[right]=array[left];
        }
        array[left]=pivot;
        quickSort(array,int1,left-1);   //取右边的子数组作为参数递归调用
        quickSort(array,left+1,int2);   //取左边的子数组作为参数递归调用
    }
    else return;
}

3、简单排序

简介:

(1)分内外两层循环,核心思维是每轮循环获得一个最大元素,并置于序列前端;

(2)平均时间复杂度O(n^2);

实现案例: 

public void simpleSort(int[] arr){
    for (int i=0;i<arr.length;i++){
        for (int j=i;j<arr.length;j++){
            if (arr[i]<arr[j]){ //将最大元素置于集合前端
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 数组排序(冒泡排序、快速排序、简单排序) 的相关文章

随机推荐

  • PHP框架的基本原理以及选择标准

    PHP框架的原理 说到PHP框架 可能很多PHP新手会感到有些胆怯 其实 PHP框架也不是那么深不可测的 框架就是别人使用PHP基础只是为你写好了的东西 只是封装在一起 这就好比我们使用PHP的函数 函数都是已近写好了的 我们只要按照函数使
  • 图解LeetCode——1812. 判断国际象棋棋盘中一个格子的颜色(难度:简单)

    一 题目 给你一个坐标 coordinates 它是一个字符串 表示国际象棋棋盘中一个格子的坐标 下图是国际象棋棋盘示意图 如果所给格子的颜色是白色 请你返回 true 如果是黑色 请返回 false 给定坐标一定代表国际象棋棋盘上一个存在
  • C/C++

    文章目录 常见面试题目讲解 宏定义 数据声明 类型修饰符的使用总结 位操作 访问固定内存位置 参考 麦子学院 嵌入式C语言高级 C语言函数的使用 常见面试题目讲解 参考 嵌入式程序员应该知道的0x10个基本问题 常见面试题目讲解 宏定义 1
  • Java设计模式——装饰者模式

    装饰者模式 一 概述 装饰者模式 装饰器模式 是一种结构型模式 定义 在不改变现有对象结构的情况下 动态地给该对象增加一些额外职责 功能 的模式 装饰者 Decorator 模式中的角色 抽象构件 Component 角色 定义一个抽象接口
  • 7-44 求整数的位数及各位数字之和

    对于给定的正整数N 求它的位数及其各位数字之和 输入格式 输入在一行中给出一个不超过109的正整数N 输出格式 在一行中输出N的位数及其各位数字之和 中间用一个空格隔开 输入样例 321 输出样例 3 6 include
  • Tomcat流程图分析

    org apache catalina startup Bootstrap 启动类 初始化步骤 从server开始到service connector 后实现了lifecycle 接口 bootstrape init gt catelina
  • Protobuf下载和编译

    系列导航 一 Protobuf下载和编译 二 Protobuf在Java中的简单使用 一 简介 protobuf全称Google Protocol Buffers 是google开发的的一套用于数据存储 网络通信时用于协议编解码的工具库 是
  • C#中导出百万级Excel只需几秒除了NPOI还可以这样

    场景 Winform中通过NPOI导出Excel的三种方式 HSSFWorkbook XSSFWorkbook SXSSFWorkbook 附代码下载 https blog csdn net BADAO LIUMANG QIZHI arti
  • 剪格子 蓝桥杯 211

    题目描述 如下图所示 3 x 3 的格子中填写了一些整数 我们沿着图中的红色线剪开 得到两个部分 每个部分的数字和都是 60 本题的要求就是请你编程判定 对给定的 m n 的格子中的整数 是否可以分割为两个部分 使得这两个区域的数字和相等
  • com.alibaba.fastjson.JSONArray cannot be cast to com.alibaba.fastjson.JSONObject

    json中类型转换问题 是错误的格式 例 JSONObject parseObject type slider show true start 1 end 100 正确的写法 JSONObject dataZoom new JSONObje
  • C# 委托(delegate)

    1 什么是委托 委托是一种引用类型 它是函数指针的托管版本 在C 中 委托是一种可以把引用存储为函数的类型 委托可以引用实例和静态方法 而函数指针只能引用静态方法 委托的声明非常类似于函数 和函数不同的的是委托不带函数体 并且需要Deleg
  • 初识Spring Boot

    目录 一 Spring Boot是什么 二 创建Spring Boot项目 1 使用IDEA创建 2 网页版创建 三 运行项目 一 Spring Boot是什么 简单来说Spring Boot就是Spring的 脚手架 就是一个框架 Spr
  • nodejs libuv学习

    读了一下libuv源代码 简单记录一些见解 https github com libuv libuv libev就是一个基于epoll封装事件的函数库 自身不带有线程池等操作 而libuv则是在libev基础上 加上线程操作的功能 大体运作
  • Java中Array.sort()的几种用法

    转载https www tuicool com articles iii6N3 Java的Arrays类中有一个sort 方法 该方法是Arrays类的静态方法 在需要对数组进行排序时 非常的好用 但是sort 的参数有好几种 下面我就为大
  • 【QT控件大小自适应窗口变化】

    问题 刚开始学习QT时 在窗口中放置一个个控件 而后运行程序 会发现改变窗口大小时 控件大小不随窗口大小变化而变化 导致窗口大小变化没意义 同时也让精心布局看起来很难看 本文提供一种使用BoxLayout中放置控件 所有可见控件能够随窗口大
  • 同仁堂-十大王牌、十大名药

    同仁堂 十大王牌 十大名药 官网 ZY123 com 中医123
  • WPS中编辑Word删除内容之后保存退出了如何恢复?

    目录 一 问题简述 二 Word用户 场景一 情况一 删除了内容没有退出文档 情况二 删除了内容退出文档 情况三 删除了文件退出文档 三 Wps用户 场景二 情况一 删除了内容没有退出文档 情况二 删除了内容退出文档 情况三 删除了文件退出
  • PAT 5 剪邮票

    剪邮票 如 图1 jpg 有12张连在一起的12生肖的邮票 现在你要从中剪下5张来 要求必须是连着的 仅仅连接一个角不算相连 比如 图2 jpg 图3 jpg 中 粉红色所示部分就是合格的剪取 请你计算 一共有多少种不同的剪取方法 请填写表
  • Flink从入门到真香(18、使用flink table api 从文件和kafka中读取数据)

    还是一样 要先引入依赖 在pom xml
  • java 数组排序(冒泡排序、快速排序、简单排序)

    目录 1 冒泡排序 2 快速排序 3 简单排序 1 冒泡排序 简介 1 循环遍历数组 判断相邻两个元素大小如果满足条件list x gt list x 1 则将两个元素位置对换 2 重复步骤 1 判断初始元素向右依次递减 3 一般有两层循环