java常用排序总结

Java常用排序算法 阅读详情

各种排序对比:

这里写图片描述
注:

  1. 时间复杂度:排序的时间复杂度,由于排序受本身数据的影响,比如说在些全部混乱,而一些数据或者数据中一部分值有序。因此可能出现最好情况和最差情况,一般来说用平均情况来衡量时间复杂度。
  2. 稳定性:对于出现相同值的情况下,有没有改变其顺序比如说 {3、4、1、1、8};排序后的结果可能是{1(第一个)、1(第二个)、3、4、8},{1(第二个)、1(第一个)、3、4、8};如果保存稳定的话则不变,如果不稳定的话则有可能改变。
  3. 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序的时间复杂度是O(n^2),空间复杂度是O(1) 。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。

1、冒泡排序

冒泡排序:在对数列进行排序时,比较大的值经过每轮的排序都会慢慢“浮”上来,就像冒的泡泡一样。
冒泡排序运行起来是比较慢的,但在排序算法中是比较简单的,冒泡排序遵循的规则是:比较相邻的两个数值。
对于冒泡排序的时间复杂度可以简单这样猜疑:一个循环嵌套另一个循环,对于外层循环执行了n次,内层循环也执行了n次,这就意味着大约执行n*n次的操作,也就是冒泡排序的平均时间复杂度的O(n^2);


这里写图片描述


代码如下:

public class SortDemo {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a[] = { 7, 2, 300, 9, 3, 0, 6 };
        // 外层循环遍历数组,为数组长度-1(相当于从数组中取出一个元素和其他)
        for (int i = 1; i < a.length; i++) {
            System.out.println("第" + i + "轮的排序结果:");
            // 内层循环对数组中的值判读,进行交换;如果大的往后移;
            for (int j = 0; j < a.length - i; j++) {
                if (a[j] > a[j + 1]) {
                    int temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
            // 对每循环一轮结果进行打印;
            for (int n = 0; n < a.length; n++) {
                System.out.print(a[n] + "   ");
            }
            System.out.println();
        }

    }

}

运行结果:
这里写图片描述

2、选择排序

选择排序改进了冒泡排序,虽然把交换实数减小到n,但比较的次数仍然为n*n。
这里写图片描述
选择排序就是把数据中所有的元素扫描一趟,然后把这组中的最小的值放到最左边的位置上。选择排序的核心就是选出最小的值。


代码如下:

public class SelectDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a[] = { 4, 8, 90, 2, 500 };
        // 在外层循环中,控制每一轮循环;

        for (int i = 0; i < a.length - 1; i++) {
            int min = i;
            System.out.println("第" + (i+1) + "轮循环:");
            // 在内层循环中比较值大小,找出最小值,并记录基数组的下标;
            for (int j = i + 1; j < a.length; j++) {
                if (a[min] > a[j]) {
                    min = j;
                }

            }
            // 如果不是最小值,则把这个交换到这个位置上;
            if (i != min) {
                int temp = a[min];
                a[min] = a[i];
                a[i] = temp;
            }
            for (int n = 0; n < a.length; n++) {
                System.out.print("  " + a[n]);
            }
            System.out.println();

        }
    }

}

这里写图片描述

3、插入排序

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。

插入排序如下图所示:


这里写图片描述


代码如下:

    public static void main(String[] args) {
        int j, insert;
        int a[] = { 7, 4, 6, 20, 100, 1, 0 };
        for (int i = 1; i < a.length; i++) {
            // 记录可能要插入的值;
            insert = a[i];
            // j初始化的值为数组的下标;
            j = i - 1;
            //当j大于等于0时,并且数组元素中的值大于插入时,继续循环,直到找到比比当前值小的;
            while (j >= 0 && insert < a[j]) {
                a[j + 1] = a[j];
                j--;
            }
            //找到当前数组中元素比插入值小,则把它赋值给下一个元素;
            a[j + 1] = insert;
            for (int n = 0; n < a.length; n++) {
                System.out.print("  " + a[n]);
            }
            System.out.println();
        }
    }

}

运行:
这里写图片描述

java数据结构和算法(第二版)对几种排序之间的总结与比较:

  1. 一般情况下几乎用不到冒泡排序算法。它过于简单了,以至于可以毫不费力的写出来。然而当数据量很小的时候它会有些应用的价值。
  2. 选择排序虽然把交换次数降低,但比较的次数仍然很大,当数据量很小,并且交换数据相对于比较数据更加耗时的情况下,可以应用选择排序。
  3. 在大多数民情况下,假设数据量比较小或者基本有序时,插入排序算法是三种简单排序算法中最好的选择。
大众点评商家及评分数据(2012-2025) 大众点评及商家评分数据库全面覆盖全国范围内多个城市的商户信息,涵盖餐饮、购物、休闲娱乐等多个消费领域,包含商家基础信息、地理坐标、分类体系、经营状态、用户评价、消费水平及服务设施等共计28个字段。 阅读详情

相关推荐

【入门篇】第五章 第一次与 AI Agent 交互

本文介绍了OpenClaw中最基本的用户与AI Agent交互方式,剖析了Agent和Gateway两个核心组件的作用,通过简单示例展示了从用户请求到结果返回的完整执行流程,说明了最小交互过程对验证系统可用性的重要意义,为后续学习复杂任务执行机制奠定基础。

lanyv的博客 512

java简单算法_java实现简单的算法

排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。内排序有可以分为以下几类:(1)、插入排序:直接插入排序、二分法插入排序、希尔排序。(2)、选择排序:简单选择排序、堆排序。(3)、交换排序:冒泡排序、快速排序。(4)、归并排序(5)、基数排序一、插入排序•思想:每步将一个待排序的记录,按...

weixin_39637921的博客 678

思科路由器IPv6各种路由协议配置

思科路由器IPv6路由协议配置:1、静态路由配置;2、默认路由配置;3、RIPng路由配置;4、OSPFv3路由配置。

weixin_41687096的博客 6543

java中常用排序方法

时间复杂度:O(N^2)空间复杂度:O(1)稳定性:稳定。

2301_80636823的博客 1542

Linux之GTK系列教程

00、背上行囊1——程序员学习之道 01、背上行囊2——为什么要学习GTK 02、背上行囊3——GUI概述 03、背上行囊4——GTK简介 04、背上行囊5——GTK环境搭建( Linux ) 05、背上行囊6——GTK环境搭建( windows ) 06、踏上旅途1——一个简单的空白窗口 07、踏上旅途2——控件的添加 08、踏上旅途3——布局容器之水平布局 09、踏上旅途

每天积累一点点 2万+

Python小白也能玩转迅投QMT量化交易?手把手教你从安装到第一个策略

本文为零基础Python用户提供了上手迅投QMT量化交易平台的完整指南。从Python 3.6环境配置、QMT客户端获取安装,到核心概念讲解,并手把手教你编写并回测一个经典的双均线交易策略,帮助初学者快速迈出量化交易的第一步。

weixin_29103191的博客 763

常用排序算法的java实现

/** * 冒泡排序 * 时间复杂度: 最小 = O(n), 最大 = O(n^2), 平均 = O(n^2) * * @param data 待排序序列 * @return */ public static int[] bubbleSort(int[] data) { if (data == null || data.length == 0 || data.length =...

LittleBeen 288

第055篇:陆地观测卫星数据服务平台高级检索方法

检索数据检索到肩膀疼,这谁能信?谁能?

liujinli0712的博客 7823

java常用的排序算法有哪些_Java中10个常用的排序算法

import java.util.ArrayList;import java.util.Arrays;public class Sort {public static void main(String[] args) {int[] arr = new int[20];int index = 0;for(int i = 20;i > 0;i--)arr[index++] = i;System....

weixin_31765677的博客 629

Docker:安装Apache Pulsar 消息队列的详细指南

本文详细介绍了Apache Pulsar的Docker化安装部署方法,包括单节点Pulsar服务和管理界面Pulsar Manager的安装配置。通过Docker命令快速搭建Pulsar环境,并演示了租户和命名空间的基础管理操作。同时提供了Spring Boot项目与Pulsar集成的完整方案,从依赖配置到客户端初始化,为开发人员构建实时消息系统提供实用参考。

木头 2209

华为OD机试双机位C卷:打印机队列 (C++/Py/C/Java/Js/Go)

华为OD机试双机位C卷 打印机队列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 打印机队列。

qq_45776114的博客 1793

(09)Java中常用的排序

##Java中常用的排序方法 冒泡,选择,插入,快速,最重要的是掌握思想 1,冒泡排序 int[] arr = {13,4,423,52,344,12}; for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-1-i; j++) { if(arr[...

qq_2533491534的博客 317

华为OD机试真题2026双机位C卷 C语言 实现【明日之星选举】

给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

MISAYAONE的博客 184

java中jtable排序_Java中10个常用的排序算法

Java中10个常用的排序算法摘要:算法在日常的编程中是非常重要的一个知识点,今天让我们一起重温排序,下面是用java实现的常用的十个算法案例:import ...

weixin_39552768的博客 104

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java常用的排序算法有哪些_Java常用的五大排序算法

Java常用的五大排序算法排序算法的使用可以让我们更方便的进行排序,下面是小编给大家提供的Java常用的五大排序算法大家可以参考阅读,更多详情请关注应届毕业生考试网。1、Java排序算法之选择排序选择排序的基本思想是遍历数组的过程中,以 i 代表当前需要排序的序号,则需要在剩余的 [i…n-1] 中找出其中的最小值,然后将找到的最小值与 i 指向的值进行交换。因为每一趟确定元素的过程中都会有一个选...

weixin_30646295的博客 224

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java中常用排序

【代码】java中常用排序。

2303_80464098的博客 339

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java常用算法_一遍记住Java常用的八种排序算法

点击上方Java旅途,选择设为星标优质文章,每日送达1.直接插入排序经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。将第一个数和第二个数排序,然后构成一个有序序列将第三个数插入进去,构成一个新的有序序列。对第四个数、第五个数……直到最后一个数,重复第二步。如何写写成代码:首先设定插入次数,即循环次数,for(int i=1;i设定插入数和得到已经排好序列的最后一个数的位...

weixin_29752389的博客 95

java常用排序方法集合sort

等)使用快速排序(Dual-Pivot Quicksort)。只能用于数组(包括基本类型数组和对象数组)。方法,可以直接对列表进行排序。接口的默认方法(Java 8 引入)。等)使用归并排序(TimSort)。排序是原地进行的(即直接修改原数组)。排序是原地进行的(即直接修改原集合)。使用归并排序(TimSort)。当你需要对一个数组进行排序时。当你需要排序基本类型数组时(原地排序(直接修改原列表)。支持自定义排序规则(通过。当你需要排序对象集合时(不能用于基本类型)。不能直接用于集合)。

2301_81193552的博客 956

常用的排序算法(Java版)

排序算法有很多,这里列出最常用的一些,如选择排序、插入、冒泡等。稳定性:待排序数据中有相同的数,排序之后相同的数与排序前的前后位置关系不变,则成为稳定排序算法。比如我们有一组数据2,9,3,4,8,3;按照大小排序之后就是2,3,3,4,8,9;两个3的前后顺序在排序前后保持不变,即稳定。排序算法最佳时间复杂度平均时间复杂度最坏时间复杂度稳定性空间复杂度选择排序O(N^2)O(N^2)O(N^2)不稳定O(1)插入排序O(N)O(N^2)O(N^2)稳定O(1)

MCN的博客 767

java排序常用方法总结

想改成降序就加个reversed();数组排序比较常见的就是二维数组的排序。

hsyhcr的博客 279

Java常用排序算法及代码(详解)

常用排序算法详解含代码

随梦而飞的博客 1323

JAVA常用4种排序方法

JAVA常用4种排序方法

qq_44231628的博客 494

常用排序Java实现

常用排序Java实现 冒泡排序 基本思想:每次将最大的放到未排序序列的最后,序列后部是保持有序的 //冒泡排序 public static int[] maopao(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { //每次将最大的放到最后,所以j每次循环的最大值是减小的 for (int j = 0; j < arr.length - 1 - i; j++)

老洋人的博客 237

Java数组排序的常用算法及实现?

冒泡排序是一种简单直观的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。归并排序是一种分而治之的树状数组排序算法,它将待排序序列分解为若干个子序列,然后递归地对子序列进行排序,并将已排序的部分合并起来形成有序序列。// 进行交换操作。if (arr[j] >arr[j + 1]) { // 如果当前元素大于下一个元素则进行交换操作。public static void bubbleSort(int[] arr) { // 方法名和参数类型需根据实际情况进行调整。

qq_35974860的博客 100

java中常用的排序和查找算法

本文内容来自网络资源整理,若有错误,敬请指正。java中的常用排序方法java中常用的几种排序方法:选择排序、插入排序、快速排序、冒泡排序、归并排序、shell排序。 java 中的查找方法有:顺序查找法、二分查找法选择排序思路:在乱序数组中,假设第一位数最小,依次让后面的数与之比较,若遇到比它小的数就交换位置,一趟下来第一个数就是序列中最小的数,然后从第二个数开始重复操作。 public

九洱东的博客 9187
上一篇: c语言中字符串和字符串函数
下一篇: java中的String,StringBuffer,StringBuilder
android_xiaogang
博客等级 码龄12年 89粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值