死磕数据结构与算法(排序)--基数排序。才疏学浅,如有错误,及时指正

本文主要是介绍死磕数据结构与算法(排序)--基数排序。才疏学浅,如有错误,及时指正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

死磕数据结构与算法(排序)--基数排序。才疏学浅,如有错误,及时指正

    • 八大排序算法
      • 1. [冒泡排序算法]()
      • 2. [选择排序算法]()
      • 3. [插入排序冒泡算法]()
      • 4. [希尔排序冒泡算法]()
      • 5. [快速插入冒泡算法]()
      • 6. [归并排序冒泡算法]()
      • 7. [基数排序冒泡算法]()
      • 8. [堆排序算法]()
  • 基数排序
    • 1. 概念以及思路
    • 2. 图解过程
    • 3. 示例代码

八大排序算法

1. 冒泡排序算法

2. 选择排序算法

3. 插入排序冒泡算法

4. 希尔排序冒泡算法

5. 快速插入冒泡算法

6. 归并排序冒泡算法

7. 基数排序冒泡算法

8. 堆排序算法

基数排序

1. 概念以及思路

基数排序,属于“分配式排序”,又叫“桶子法”。是桶排序的扩展。
基数排序是效率高的稳定性排序法
基数排序是经典的空间换时间的方法,占用的内存很大,当对海量的数据进行排序时,容易出现 OutofMemoryError
思路: 将数组中的每一个数按照位数进行切割,然后放入事先准备好的桶中,按照每一次的位数从而得到有序的序列。

2. 图解过程

在这里插入图片描述

3. 示例代码

package sort;import java.util.Arrays;public class RadixSort {public static void main(String[] args) {int arr[] = {15,17,30,98,5,60,4,5,1,50};radixSort( arr );System.out.println( Arrays.toString(arr));}public static void radixSort(int[] arr){//定义一个桶的二维数组int a[][] = new int[10][arr.length];//定义一个存储每个桶内有多少元素的数组int b[] = new int[arr.length];int max = arr[0];//计算出arr中最大的那个数for (int i = 1; i < arr.length; i++) {if(arr[i] > max){max = arr[i];}}//使用max计算出位数int weishu = (max + "").length();int t = 0;//循环操作for (int i = 0; i < weishu; i++) {//取出arr数组的每一个元素,然后把数组放入到创建的桶中。for (int j = 0; j < arr.length; j++) {int wei = arr[j] / (int)Math.pow( 10, i ) % 10;a[wei][b[wei]] = arr[j];b[wei]++;}//元素全进入桶中之后,再把元素拿出来放入arr中for (int j = 0; j < arr.length; j++) {if(b[j] != 0) {for (int k = 0; k < b[j]; k++) {arr[t] = a[j][k];t++;}}}//把b中的数组清0for (int k = 0; k < b.length; k++) {b[k] = 0;}t = 0;}}
}

这篇关于死磕数据结构与算法(排序)--基数排序。才疏学浅,如有错误,及时指正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/438596

相关文章

Java Map排序如何按照值按照键排序

《JavaMap排序如何按照值按照键排序》该文章主要介绍Java中三种Map(HashMap、LinkedHashMap、TreeMap)的默认排序行为及实现按键排序和按值排序的方法,每种方法结合实... 目录一、先理清 3 种 Map 的默认排序行为二、按「键」排序的实现方式1. 方式 1:用 TreeM

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

SpringBoot3匹配Mybatis3的错误与解决方案

《SpringBoot3匹配Mybatis3的错误与解决方案》文章指出SpringBoot3与MyBatis3兼容性问题,因未更新MyBatis-Plus依赖至SpringBoot3专用坐标,导致类冲... 目录SpringBoot3匹配MyBATis3的错误与解决mybatis在SpringBoot3如果

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp