Java算法-八大排序(图解+代码)

Linux系统杀毒软件深度评测:8款主流工具对比(2025最新版) 本文针对Linux服务器/桌面环境,实测8款杀毒软件,涵盖开源免费、企业级防护、轻量级工具等类型,附保姆级安装教程和避坑指南,新手也能5分钟选对工具! 阅读详情

在这里插入图片描述

八大排序之冒泡排序

  • 冒泡排序原理:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
  • 冒泡排序图解:在这里插入图片描述
  • 代码演示:
package 八大排序;

import java.util.Arrays;

public class 冒泡排序 {
    public static void main(String[] args) {
        //冒泡排序的原理:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
        int[] arr={4,21,5,86,74,12};
        //外层循环次数是数组长度减一,从索引0开始
        for (int i = 0; i < arr.length-1; i++) {
            //里层循环次数是数组长度减第几轮循环
            for (int j = 0; j < arr.length-1-i; j++) {
                if(arr[j]>arr[j+1]){
                    int t=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=t;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

八大排序之选择排序

  • 选择排序原理:从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
  • 选择排序图解:在这里插入图片描述
  • 代码演示:
package 八大排序;

import java.util.Arrays;

public class 选择排序 {
    public static void main(String[] args) {
        //选择排序原理:从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
        int[] arr={4,21,5,86,74,12};
        //外层循环次数是数组长度减一,从索引0开始
        for (int i = 0; i < arr.length-1; i++) {
            //里层循环次数是数组长度减第几轮循环
            for (int j = i+1; j < arr.length; j++) {
                if(arr[i]>arr[j]){
                    int t=arr[i];
                    arr[i]=arr[j];
                    arr[j]=t;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

八大排序之直接插入排序

  • 直接插入排序原理:从1索引处开始,将后面的元素插入到之前的有序列表中,使之仍保持有序
  • 直接插入排序图解:在这里插入图片描述
  • 代码演示:
package 八大排序;

import java.util.Arrays;

public class 直接插入排序 {
    public static void main(String[] args) {
        //直接插入排序的原理:从1索引处开始,将后面的元素插入到之前的有序列表中,使之仍保持有序
        int[] arr={4,21,5,86,74,12};
        //外层循环次数是数组长度减一,从索引1开始
        for (int i = 1; i < arr.length; i++) {
            //里层循环进行比较插入
            while (arr[i]<arr[i-1]){
                int t=arr[i];
                arr[i]=arr[i-1];
                arr[i-1]=t;
                //让i自减,可以使它继续和前面的元素进行比较,加上判断条件,是为了防止索引越界
                if(i>1){
                    i--;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

八大排序之希尔排序

  • 希尔排序原理:他是对插入排序的一个优化,核心的思想就是合理的选取增量,经过一轮排序后,就会让序列大致有序,然后再不断地缩小增量,进行插入排序,直到增量为 1,那整个排序结束
  • 希尔排序图解:在这里插入图片描述
  • 代码演示:
package 八大排序;

import java.util.Arrays;

public class 希尔排序 {
    public static void main(String[] args) {
        //希尔排序原理:他是对插入排序的一个优化,核心的思想就是合理的选取增量,经过一轮排序后,就会让序列大致有序
        //然后再不断地缩小增量,进行插入排序,直到增量为 1,那整个排序结束
        int[] arr={4,21,5,86,74,12,57,42};
        //增量的大小最好定义为数组长度的一半,然后不断减半,直至为1
        for(int h=arr.length/2;h>0;h/=2){
            //里层循环次数=数组长度 - 增量大小
            for (int i=h;i<arr.length;i++){
                //里层循环次数=j/h,保证和间隔h的数比较后,再和间隔h的数进行比较,已达到有序的目的,例如:此时h=2,j=4,索引4的数和索引2的数比较后,继续和索引0的数进行比较,已达到有序的目的
                for(int j=i;j>h-1;j-=h){
                    if(arr[j]<arr[j-h]){
                        int t=arr[j];
                        arr[j]=arr[j-h];
                        arr[j-h]=t;
                    }
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

八大排序之快速排序

  • 快速排序原理:分治法:比大小,再分区
  • 实现步骤:
    1.从数组中取出一个数,作为基准数
    2.分区:将比这个数大的数放在它的右边,比它小的数放在它的左边(挖坑填数的思想)
    挖坑填数思想:
    (1):用基准数挖出形成第一个坑
    (2):由后向前找比它小的数,找到后挖出此数填到前一个坑中
    (3):由前向后找比它大或等于它的数,找到后挖出此数填到前一个坑中
    3.再对左右区间重复第二步,直到各区间只有一个数(用递归方法实现)
  • 快速排序图解:

在这里插入图片描述

  • 代码演示:
package 八大排序;

import java.util.Arrays;

public class 快速排序 {
    public static void main(String[] args) {
        int[] arr = {4,21,5,86,74,12,57,42};
        quickSort(arr, 0, arr.length - 1);
        System.out.println(Arrays.toString(arr));
    }

    public static void quickSort(int[] arr, int start, int end) {
        if (start < end) {
            //获取分区索引
            int index = getIndex(arr, start, end);
            //对左右两个分区 再进行同样的步骤 ,即是递归调用
            quickSort(arr, start, index - 1);//左半部分
            quickSort(arr, index + 1, end);//右半部分
        }
    }

    private static int getIndex(int[] arr, int start, int end) {
        int i = start;
        int j = end;
        //定义基准数
        int x = arr[i];
        //循环
        while (i < j) {
            //从右往左比较,找出比基准数小的数
            while (i < j && arr[j] >= x) {
               j--;
            }
            //从右往左找到比基准数小的数了后,填坑
            if (i < j) {
                // 找比基准数小的数,填到基准数的坑位上
                arr[i] = arr[j];
                //让 i++,准备从左找比基准数大的数
                i++;
            }

            //从左往右找,找比基准数大的数
            while (i < j && arr[i] < x) {
                i++;
            }
            // 找比基准数大的数,找到后填到上一个坑
            if (i < j){     
               arr[j] = arr[i];
                //让 j--,准备下一次循环
               j--;
            }
        }
        //当上面的循环结束后把基准数填到最后一个坑位,也就以基准数为界,分成了左右两部分
        arr[i] = x; //把基准数填进去
        return i; //返回基准数所在位置的索引
    }
}
//基准数的左边没有数,不用进行再分区,基准数的右边进行再分区,

八大排序之归并排序

  • 归并排序原理:假设初始序列有N个记录,则可以看成是N个有序的子序列(拆分思想,递归实现),每个子序列的长度是1,然后两两归并,得到N/2个长度为2或1的有序子序列,再两两归并…如此重复,直到一个长度为N的有序子序列为止
  • 归并排序图解:
    在这里插入图片描述
  • 代码演示:
package 八大排序;

import java.util.Arrays;

public class 归并排序 {
    public static void main(String[] args) {
        int[] arr = {4,21,5,86,74,12,57,42};
        chaiFen(arr,0,arr.length-1);
        System.out.println(Arrays.toString(arr));
    }

    private static void chaiFen(int[] arr, int start, int end) {
        if(start<end){
            int center=(start+end)/2;
            chaiFen(arr,start,center);
            chaiFen(arr,center+1,end);
            heBing(arr,start,center,end);
        }

    }

    private static void heBing(int[] arr, int start, int center, int end) {
        //定义一个临时数组
        int[] arr2 = new int[end - start + 1];
        //定义左边数组的起始索引
        int i=start;
        //定义右边数组的起始索引
        int j=center+1;
        //定义临时数组的起始索引
        int index=0;
        //比较左右两个数组的元素大小,往临时数组里加
        while (i<=center&&j<=end){
            //左小右大,临时数组加左边的数,同时左边数组索引自增一下,让左边下一个数继续和右边的数进行比较
            if(arr[i]<=arr[j]){
                arr2[index]=arr[i];
                i++;
            }else {  //反之,左大右小,临时数组加右边的数,同时右边索引自增一下,让右边下一个数继续和左边的数进行比较
                arr2[index]=arr[j];
                j++;
            }
            //让临时数组的索引也进行自增,保证临时数组每个索引都有值
            index++;
        }
        //处理左边剩余元素
        while (i<=center){
            arr2[index]=arr[i];
            i++;
            index++;
        }
        //处理右边剩余元素
        while (j<=end){
            arr2[index]=arr[j];
            j++;
            index++;
        }
        //将临时数组的元素装到原数组中
        for (int i1 = 0; i1 < arr2.length; i1++) {
            arr[i1+start]=arr2[i1];
        }
    }
}

八大排序之基数排序

  • 基数排序原理:基数排序属于分配式排序,又称桶子法,通过分配再收集的方法进行排序,属于稳定式排序。
  • 基数排序图解:

在这里插入图片描述

  • 代码实现:
package 八大排序;

import java.util.Arrays;

public class 基数排序 {
    public static void main(String[] args) {
        //基数排序:通过分配再收集的方法进行排序
        int[] arr = {4,21,5,86,74,12,57,42};
        //用来装数的桶
        int[][] arr2 = new int[10][arr.length];
        //定义统计数组
        int[] arr3 = new int[10];
        int max=0;
        for (int i : arr) {
            max=max>i?max:i;
        }
        //求出最大数是几位数,并将最大数传给排序方法
        int len = String.valueOf(max).length();
        //参一:原始数组  参二:用来装数的桶(二维数组) 参三:统计数组  参四:原始数组中最大的数的位数
        sort(arr, arr2, arr3, len);
        System.out.println(Arrays.toString(arr));
    }

    private static void sort(int[] arr, int[][] arr2, int[] arr3, int len) {
        //最大数是几位数,外层装桶几次
        for (int i = 0,n=1; i < len; i++,n*=10) {
            for (int j = 0; j < arr.length; j++) {
                int ys=arr[j]/n%10;
                //给对应的桶中装数
                arr2[ys][arr3[ys]++]=arr[j];
            }
            //将桶中的数拿出来
            int index=0;
            for (int h = 0; h < arr3.length; h++) {
                //统计数组的元素不为零,再将桶中的数拿出来
                if(arr3[h]!=0){
                    //统计数组中元素的大小是多少,则遍历几次,将对应桶中的元素全部拿出来
                    for (int k = 0; k < arr3[h]; k++) {
                        arr[index]=arr2[h][k];
                        index++;
                    }
                    //将统计数组清零,准备下一次装桶
                    arr3[h]=0;
                }
            }
        }
    }
}

八大排序之堆排序

  • 堆排序原理:堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
  • 堆排序图解:
    在这里插入图片描述
  • 代码实现:
package 八大排序;

import java.util.Arrays;

public class 堆排序 {
    public static void main(String[] args) {
        //堆排序原理:堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
        //大顶堆:arr[i]>=arr[i*2+1]&&arr[i]>=arr[i*2+2]
        //小顶堆:arr[i]<=arr[i*2+1]&&arr[i]<=arr[i*2+2]
        int[] arr = {4,21,5,86,74,12,57,42};
        //求出最大的非叶子节点的索引
        int startIndex=(arr.length-1)/2;
        //循环开始调,最大的非叶子节点多大,则循环几次,从最大的非叶子节点开始调
        for (int i = startIndex; i >=0; i--) {
            toMaxheap(arr,arr.length,i);
        }
        //以上的运行结果已经达到大顶堆的效果,此时只需将根节点的元素与最后一个叶子节点的元素互换就行,并递归将剩余元素继续转化成大顶堆
        for (int i = arr.length-1; i > 0; i--) {
            int t=arr[i];
            arr[i]=arr[0];
            arr[0]=t;
            //将剩余元素继续转化为大顶堆结构
            toMaxheap(arr,i,0);
        }
        System.out.println(Arrays.toString(arr));
    }

    /**
     *
     * @param arr   //要进行排序的数组
     * @param size  //要排序的范围
     * @param startIndex  //起始的索引位置
     */
    private static void toMaxheap(int[] arr, int size, int startIndex) {
        //求出左右节点的索引
        int leftNodeIndex=startIndex*2+1;
        int rightNodeIndex=startIndex*2+2;
        //假设刚开始最大数的索引就是起始索引
        int maxIndex=startIndex;
        //求出最大节点所对应的索引
        if(leftNodeIndex<size&&arr[leftNodeIndex]>arr[maxIndex]){
            maxIndex=leftNodeIndex;
        }
        if(rightNodeIndex<size&&arr[rightNodeIndex]>arr[maxIndex]){
            maxIndex=rightNodeIndex;
        }
        //调换位置,将最大节点放在大顶堆的根节点处
        if(maxIndex!=startIndex){
            int t=arr[startIndex];
            arr[startIndex]=arr[maxIndex];
            arr[maxIndex]=t;
            //互换完之后可能会影响最大节点以下的大顶堆结构,所以这里需要递归调用方法,保证每个子树都是大顶堆结构
            toMaxheap(arr,size,maxIndex);
        }
    }
}
STM32+EC800M-CN 4G模块数据透传踩坑实录:从AT指令调试到花生壳内网穿透 本文详细介绍了STM32与移远EC800M-CN 4G模块的数据透传实现过程,包括硬件连接、AT指令调试、TCP连接建立以及花生壳内网穿透配置。通过实战案例和代码示例,帮助开发者快速解决4G通信模块在物联网应用中的常见问题,提升数据传输稳定性。 阅读详情

相关推荐

Unity 开发Apple Vision Pro物体识别追踪ObjectTracking

当您在 visionOS 应用中实现对象跟踪时,您可以将现实世界中的物体无缝集成到人们的周围环境中,以增强他们的沉浸式体验。通过跟踪一个或多个物体的 3D 位置和方向,您的应用可以使用虚拟内容增强它们。您可以使用对象跟踪来提供与人周围环境中的对象的虚拟交互,例如:引导某人使用某件物品的功能、阅读其历史或了解其在周围环境中的行为。使用虚拟手册帮助人们解决家居用品和电器的问题。

Cool-浩 1185

Java实现八大排序算法(详细图文+比较)

https://www.cnblogs.com/morethink/p/8419151.html

qq_42006733的博客 768

手机安装Kali Linux

在数字化时代,信息安全和隐私保护显得尤为重要。,作为一款专业的和工具,因其强大的功能和丰富的资源库而受到广大安全研究者和爱好者的青睐。然而,我们通常只能在传统的电脑设备上安装和使用Kali Linux。那么,有没有可能将也变成一款随身携带的Kali Linux设备呢?答案是肯定的。本文将介绍如何在手机上安装Kali Linux,使你的手机变成一款强大的移动安全工具。,我们需要明确一点,手机安装Kali Linux并非简单的操作,需要对手机进行一定的改造和配置。

2301_80124151的博客 6964

八大排序算法详解(动图演示 思路分析 实例代码java 复杂度分析 适用场景)

一、分类 1.内部排序和外部排序  内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程。 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需要对外存进行访问的排序过程。 2.比较类排序和非比较排序 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性...

bytes9的专栏 1136

从零开始:小鼠Bulk RNA-seq全流程实战指南

本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。

lake5的博客 715

NXP ChessDE的安装和激活

如果客户申请的是试用版,那么一份为期 30 天的 License 将会发送申请人的账号或邮箱中,客户使用该文件进行安装即可。② 将“VENDOR snpslmd /path/to/snpslmd”中的“/path/to/snpslmd”替换成 snpslmd.exe 实际存放路径(位于 SCL 安装目录下的 win32\bin 文件夹中,默认安装的情况下就是“VENDOR snpslmd C:\Synopsys\SCL\<version>\win32\bin\snpslmd.exe”)。

weixin_47351160的博客 2043

八大排序算法详解(java版)

1.冒泡排序 //冒泡排序 //冒泡排序就是每次选择一个最大值放到后面 public void bubbleSort(int[] arr) { //外层循环控制需要比较的次数 一共是n-1次 for(int i=0; i<arr.length-1; i++) { //内层循环进行冒泡,因为每完成一次外层循环,就会在后面多一个有序序列,因此可以不用比较 for(int j=0; j<arr.length-i-1; j++) { if(arr[j]>ar

华达州的博客 760

液晶电视维修必看:TCON逻辑板故障排查全指南(附常见问题解决方案)

本文详细解析了液晶电视TCON逻辑板的工作原理与故障排查方法,涵盖LVDS信号处理、DC-DC电压系统等核心知识。提供从基础测量到高级维修的完整指南,帮助技术人员快速诊断黑屏、竖线等常见故障,并给出预防性维护建议,提升维修效率与成功率。

weixin_42535461的博客 615

【JAVA】七大排序算法(图解)

重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。将子数组调整为有序状态,不断变大这个分组长度,当最终分组长度为1时,整个数组接近有序。待排序的序列中若存在值相同的元素,经过排序之后,相等元素的先后顺序不发生改变,称为排序的稳定性。只有当前一个元素大于后一个元素时,才需要交换,若前一个元素小于后一个元素,则不需要走第二层循环。每次从无序区间中选择第一个元素,插入到有序区间的合适位置,直到整个数组有序。不断的将两个连续的有序子数组合并为一个大的数组,直到整个数组合并完成。

m0_57248752的博客 1396

Triplet Loss调参实战:Margin选多少?距离函数用哪个?我的模型为什么训不动?

本文深入探讨了Triplet Loss调参中的关键问题,包括margin参数的选择、距离函数的比较以及模型训练不动的常见原因。通过实战案例和技术分析,提供了针对不同场景(如人脸识别、商品图像、文本匹配)的margin黄金区间,并对比了欧式距离与余弦相似度的适用场景。文章还介绍了困难样本挖掘的最新策略和模型诊断的实用清单,帮助开发者高效解决度量学习中的工程难题。

weixin_29050271的博客 411

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 393

常见的排序算法(插入、希尔、选择、堆、冒泡、快排、归并)

直接插入排序希尔排序选择排序堆排序冒泡排序快速排序归并排序。

2301_81324046的博客 3726

【3天快速入门WPF】1-从最简单的xaml开始

首先我们要知道xaml语法中声明即定义,意思就是“见到元素就相当于创建实例”,MainWindow.xaml的主干是一个元素里包含着一个 元素。这段程序就是在定义一个Window类的实例,这个实例的一个组成部分是一个Grid类的实例。

Zy100Papa的博客 1623

java八大排序算法

八大排序之冒泡排序 冒泡排序原理:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 冒泡排序图解: package 八大排序; import java.util.Arrays; public class 冒泡排序 { public static void main(String[] args) { //冒泡排序的原理:相邻

Listen·Rain的博客 227

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

八大排序算法 java实现

java 八大排序算法

chx0501的专栏 526

OV9734 DATASHEET,完整规格书

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

算法-八大排序

算法-八大排序 冒泡排序(Bubble Sort) 原理 冒泡排序是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的数组,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续

weixin_44048746的博客 217

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

归并排序(不稳定)--图解

基本思想 归并排序就是递归得将原始数组递归对半分隔,直到不能再分(只剩下一个元素)后,开始从最小的数组向上归并排序。 将一个数组拆分为两个,从中间点拆开,通过递归操作来实现一层一层拆分。 从左右数组中选择小的元素放入到临时空间,并移动下标到下一位置。 重复步骤2直到某一下标达到尾部。 将另一序列剩下的所有元素依次放入临时空间。 将临时空间的数据依次放入原数据数组 图解 代码 public class MergeSort { public static void ...

weixin_56289362的博客 294

Java数组与排序,基本使用及代码实现

Java数组与排序查找元素索引位置基本查找二分查找八大排序方法冒泡排序选择排序直接插入排序希尔排序快速排序归并排序基数排序堆排序 查找元素索引位置 基本查找 根据数组元素找出该元素第一次在数组中出现的索引 public class TestArray1 { public static void main(String[] args) { //定义一个数组 int[] arr={10,20,70,10,90,100,1,2}; //根据元素查找出该元素

Unravel_TAT的博客 848

八大排序算法的原理图解及代码实现

八大排序算法 程序 = 数据结构 + 算法。 设计优良程序的两个要点:选用正确的存储结构、采用合理的解决方案。 算法就是“解决方案”。而排序,是一种非常常见的业务场景,如:“前100名下单的打八折”、“成绩前三的获一等奖”、“绩效最差的扣工资”等等。但排序的实现有很多不同的解决方案,不同的解决方案需要的运算时间和存储空间不同。 这里说的八大排序算法,都是内部排序(不需要额外的空间存储数据,所有运算...

UtopiaOfArtoria的博客 2795

图解八大排序算法——我见过的最详细的讲解(转)

一、分类 1.内部排序和外部排序  内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程。 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需要对外存进行访问的排序过程。 2.比较类排序和非比较排序 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性...

weixin_30652491的博客 6189

【数据结构与算法】Java实现八大排序

排序合集 文章目录排序合集前言1、冒泡排序2、选择排序3、插入排序4、希尔排序5、归并排序6、堆排序7、快速排序8、桶排序后话 前言 排序在算法中有很重要的作用,写下这篇文章来进一步加深自己对目前主流的排序算法的认识。下面我将从时间复杂度、空间复杂度和稳定性三个方面来介绍不同的排序算法。 以下是八种主流算法的时间复杂度、空间复杂度和稳定性的汇总。 排序方法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性 冒泡排序 O(n²) O(n²) O(n) O(1) 稳

woodwhale的博客 4091

图解八大排序算法——最详细的讲解

1.选择排序 1.1 动图演示 1.2 思路分析 1.第一个跟后面的所有数相比,如果小于(或小于)第一个数的时候,暂存较小数的下标,第一趟结束后,将第一个数,与暂存的那个最小数进行交换,第一个数就是最小(或最大的数) 2.下标移到第二位,第二个数跟后面的所有数相比,一趟下来,确定第二小(或第二大)的数 重复以上步骤 直到指针移到倒数第二位,确定倒数第二小(或倒数第二大)的数,那么最后一位也就确定了,排序完成。 1.3 负杂度分析 1.不管原始数组是否有序,...

qq_36342492的博客 5363

面试必备--八大排序算法

文章目录冒泡排序(BubbleSort)算法思路算法图解冒泡代码:直接插入排序(InsertSort)算法思路算法图解直插代码:归并排序(MergeSort)算法思路算法图解归并代码:快速排序(QuickSort)算法思路算法图解快排代码:希尔排序(ShellSort)算法思路算法图解希尔代码:堆排序(HeapSort)算法思路算法图解堆代码:基数排序(RadixSort)算法思路算法图解基数代码......

LeoByte的编程驿站 2724

【Java数据结构】想进大厂必须牢记于心的——常见八大排序算法

【Java数据结构】想进大厂必须牢记于心的——常见八大排序算法 # ????基本概念 ## ⭐排序 * 排序,就是使一串记录,按照其中的某个或某些关键字的大小,`递增`或`递减`的排列起来的操作。 * 平时的上下文中,如果提到排序,通常指的是排升序(非降序)。 * 通常意义上的排序,都是指的原地排序(in place sort)。 ## ⭐稳定性 两个相等的数据,如果经过排序后,排序算法能 **`保证其相对位置不发生变化`** ,则我们称该算法是具备 **`稳定性`** 的排序算法。

DerrickWestbrook的博客 2751

图解算法:八大排序算法

八大排序算法讲解

Laptoy的博客 3068

java八大排序

文章目录1、冒泡排序2、选择排序3、直接插入排序4、希尔排序5、快速排序6、归并排序7、基数排序8、堆排序 1、冒泡排序 冒泡排序原理:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 冒泡排序图解: 代码演示: package 八大排序; import java.util.Arrays; public class 冒泡排序 { public static void main(String[] args) { //冒泡排序的原理:相邻元素两两比较,大的往后放

314 237
上一篇: 数据库(MySQL表的复制、存储过程、触发器、视图、函数及数据库的权限)
下一篇: JDBC介绍、批处理、JDBC调用存储过程和自定义函数、获取自增长键的值、事务及事务的隔离级别
Better   Me
博客等级 码龄7年 81粉丝 82原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值