Java快速排序与归并排序及基数排序图解示例

Java快速排序与归并排序及基数排序图解示例

快速排序、归并排序和基数排序是算法中常用的排序方法,以下分别进行详细讲解。

快速排序

Java快速排序与归并排序及基数排序图解示例

快速排序是一种分治算法,其基本思想是将一个大的数据序列分成两个小的数据序列。具体做法是通过递归实现的,在每次递归时选定一个基准数(通常选第一个或者最后一个数),将整个序列中小于基准数的数放在基准数左边,大于基准数的数放在基准数右边。由于是递归操作,一直到左右两边的数列递归完成后排序就结束了。

示例:将数组 {8,4,2,5,9,1,6,3,7} 进行快速排序

选取基准数为数组的第一个数 8,依次和数组中的其他数进行比较。第一趟比较,将数组分为左半部分 {4,2,5,1,3} 和右半部分 {9,6,7},此时基准数位于中央。分别对左右两个子数组进行递归,分别选取子数组的第一个数 4 和 9 作为基准数,进行相似操作,最终得到排序后的数组 {1,2,3,4,5,6,7,8,9}。

归并排序

Java快速排序与归并排序及基数排序图解示例

归并排序是一种分治算法,它将一个大的数组分成两个小的数组,将小的数组逐一合并成一个大的数组,从而实现排序。具体做法是递归分成小的数组,再逐个合并成大的有序数组,因为递归的过程中分成的小数组都是有序的,所以最终合并的数组也是有序的。

示例:将数组 {8,4,2,5,9,1,6,3,7} 进行归并排序

首先将数组分成两个子数组 {8,4,2,5} 和 {9,1,6,3,7}。分别对两个子数组进行递归,再将排好序的子数组合并成一个大的数组。对于子数组 {8,4,2,5},继续递归分成 {8,4} 和 {2,5},对其中的 {8,4} 进行排序得到 {4,8},对 {2,5} 进行排序得到 {2,5},将两个有序子数组合并成 {2,4,5,8}。对于子数组 {9,1,6,3,7},继续递归分成 {9,1} 和 {6,3,7},对其中的 {9,1} 进行排序得到 {1,9},对 {6,3,7} 进行排序得到 {3,6,7},将两个有序子数组合并成 {1,3,6,7,9}。最终将有序的两个子数组 {2,4,5,8} 和 {1,3,6,7,9} 合并成有序的整个数组 {1,2,3,4,5,6,7,8,9}。

基数排序

Java快速排序与归并排序及基数排序图解示例

基数排序是一种比较简单的排序方法,它是通过将整个排序过程分成多轮,每轮按照不同的数位进行排序完成的。具体做法是将待排序数组中的每一个元素按照指定位置的数位进行比较排序,例如从个位开始,然后再从十位开始,以此类推直到最高位。最后,依次连接每一轮的排序结果即可得到最终的有序数组。

示例:将数组 {8,4,2,5,9,1,6,3,7} 进行基数排序,从个位开始排序

首先将数组中的每个数字按照个位数字的大小进行排序,得到 {2,4,6,8,1,3,5,7,9}。接下来按照十位数字的大小进行排序,得到 {1,2,3,4,5,6,7,8,9},最后按照百位数字的大小进行排序,因为所有数都没有百位的数字,所以直接得到最终的有序数组 {1,2,3,4,5,6,7,8,9}。

以上就是 Java 快速排序、归并排序及基数排序的详细说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java快速排序与归并排序及基数排序图解示例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 教你怎么在IDEA中创建java多模块项目

    下面是在IDEA中创建Java多模块项目的完整攻略: 1. 创建项目 首先,我们要打开IDEA,选择 “Create New Project”。然后,我们会看到一个对话框。 在对话框中,我们需要选择一个Maven项目类型,并确保我们勾选上了 “Create from archetype” 选项。然后点击 “Add archetype” 按钮,在弹出的对话框中…

    Java 2023年5月26日
    00
  • Java窗口精细全方位讲解

    Java窗口精细全方位讲解 简介 本篇攻略将完整讲解如何用Java语言创建窗口并增加各种控件,包括文本框、按钮、下拉框等等,并讲解如何实现它们的交互功能。 准备工作 在开始编程前,你需要安装Java开发工具包(JDK)和一个编译器,比如Eclipse或者IntelliJ IDEA。这里我们以Eclipse为例。 创建窗口 要创建窗口,我们需要创建一个新的Ja…

    Java 2023年5月23日
    00
  • SpringBoot详解整合Spring Boot Admin实现监控功能

    SpringBoot详解整合Spring Boot Admin实现监控功能 简介 Spring Boot Admin是用于管理和监控一个或多个Spring Boot应用程序的应用程序。相比于spring-boot-actuator,默认Web UI很友好。此外,它还提供了以下功能: 显示应用程序的元数据(例如:Git提交信息,构建时间等) 显示健康检查状态以…

    Java 2023年5月19日
    00
  • JavaScript 函数replace深入了解

    JavaScript 函数replace深入了解 什么是replace函数? replace()是 JavaScript 内置函数之一,它用于在字符串中替换与某个模式匹配的子字符串。replace()函数有两个参数,第一个参数是要替换的内容,可以是字符串或 正则表达式 ;第二个参数是新内容。 语法 string.replace(searchValue, re…

    Java 2023年6月15日
    00
  • Arthas排查Kubernetes中应用频繁挂掉重启异常

    以下是 Arthas 排查 Kubernetes 中应用频繁挂掉重启异常的完整攻略。 确认场景 首先,需要确认场景。用户反馈应用经常挂掉重启,需要排查问题。该应用运行在 Kubernetes 集群中。需要确定:是所有的节点都有相同的问题,还是只有某个节点有问题。同时,需要定位是否是应用级别的问题。 安装 Arthas 因为需要使用到 Arthas 工具,所以…

    Java 2023年5月20日
    00
  • JVM类运行机制实现原理解析

    JVM类运行机制实现原理解析 Java程序在执行时,会先编译成字节码文件,然后在JVM虚拟机上执行。JVM在运行过程中,会把字节码文件转换成机器指令,再由计算机执行。 一、JVM类运行机制简介 在Java程序启动时,JVM会去加载指定的类,根据字节码文件创建相应的类对象,并将类对象放入方法区中。当程序调用某个类的方法时,JVM会找到相应的类对象,并在方法区中…

    Java 2023年5月26日
    00
  • Java实现简单登陆界面

    想要实现Java实现简单登录界面,需要遵循以下步骤: 步骤一:创建Java项目 在IDE中,创建一个Java项目(比如使用Eclipse),并选择创建一个Java程序。该程序将成为登录界面的入口。 步骤二:设计登录界面 使用Swing或JavaFX等Java GUI库,设计登录界面的界面元素。例如,需要一个文本框来输入用户名,一个密码框来输入密码,还需要一个…

    Java 2023年5月18日
    00
  • Bootstrap Table从服务器加载数据进行显示的实现方法

    接下来我将为您提供Bootstrap Table从服务器加载数据进行显示的实现方法的完整攻略。 什么是Bootstrap Table? Bootstrap Table是一个非常方便的jQuery插件,可以把表格数据便捷地展示成可排序、可分页、可编辑等功能的表格。Bootstrap Table是基于Bootstrap构建的,它的特点是轻量、易用、响应式、美观。…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部