package main

import (
"fmt"
) func SelectSortMax(arr []int) int {
arrLen := len(arr)
if arrLen <= 1 {
return arr[0]
}else {
max := arr[0]
for i, _ := range arr{
if arr[i] > max {
max = arr[i]
}
}
return max
}
} func RadixSort(arr []int) []int {
max := SelectSortMax(arr)
for bit := 1; max / bit > 0; bit *= 10 {
arr = BitSort(arr, bit)
fmt.Println(arr)
}
return arr
}
func BitSort(arr[]int, bit int) []int {
arrLen := len(arr)
bitcounts := make([]int, 10)
for i := 0; i < arrLen; i++ {
num := (arr[i]/bit) % 10
bitcounts[num]++
}
for i := 1; i < 10; i++ {
bitcounts[i]+= bitcounts[i-1]
}
tmp := make([]int, arrLen)
for i := arrLen - 1; i >= 0; i-- {
num := (arr[i] / bit) % 10
tmp[bitcounts[num] - 1] = arr[i]
bitcounts[num]--
}
for i := 0; i < arrLen; i++ {
arr[i] = tmp[i]
}
return arr
} func main() {
arr := []int{11, 91, 222, 348, 878, 348, 7123, 4213, 6232, 1011, 1011, 1011, 1011, 1011, 7123, 7123, 7123, 7123, 7123, 7123, 7123, 7123, 7123, 7123, 7123, 7123}
fmt.Println(RadixSort(arr))
}

  

go 基数排序的更多相关文章

  1. 算法与数据结构(十七) 基数排序(Swift 3.0版)

    前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关.今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比 ...

  2. 排序算法----基数排序(RadixSort(L))单链表智能版本

    转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...

  3. 排序算法----基数排序(RadixSort(L,max))单链表版本

    转载http://blog.csdn.net/Shayabean_/article/details/44885917博客 先说说基数排序的思想: 基数排序是非比较型的排序算法,其原理是将整数按位数切割 ...

  4. 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)

    如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...

  5. 基本排序算法——基数排序java实现

    基数排序 package basic.sort; import java.util.Arrays; import java.util.Random; public class RadixSort { ...

  6. 数据结构作业之用队列实现的基数排序(Java版)

    题目: 利用队列实现对某一个数据序列的排序(采用基数排序),其中对数据序列的数据(第1和第2条进行说明)和队列的存储方式(第3条进行说明)有如下的要求: 1)当数据序列是整数类型的数据的时候,数据序列 ...

  7. 基数排序 java 实现

    基数排序 java 实现 Wikipedia: Radix sort geeksforgeeks: Radix sort 数学之美番外篇:快排为什么那样快 Java排序算法总结(八):基数排序 排序八 ...

  8. 【UVA 11462】 Age Sort(基数排序)

    题 题意 给你最多2000000个数据,大小是1到99的数,让你排序输出. 分析 快排也可以过.不过这题本意是要基数排序(桶排序),就是读入年龄age, a[age]++,然后输出时,从1到99岁(看 ...

  9. Hark的数据结构与算法练习之基数排序

    算法说明 基数排序是基于计数排序的,所以看这个之前要先看一下计数排序对于理解基数排序是很有帮助的(发现计数和基数的音节几乎一致啊).这个我有写,请点击. OK,现在你肯定已经熟悉了计数排序,那么我就来 ...

  10. 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较

    2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...

随机推荐

  1. HarmonyOS极客松“上分秘籍”! 高手们顶峰相见!

      HarmonyOS 极客马拉松2023 火热进行中,我们期待与各位开发者相聚一起,践行极客精神,创造无限可能! 我们鼓励各位极客们自由组队,挥洒创意,用HarmonyOS 探索移动应用和服务的更多 ...

  2. 一个简单的开源消息中间件 FolkMQ v1.4.2 发布

    功能简表 角色 功能 生产者(客户端) 发布消息.定时消息(或叫延时).顺序消息.可过期消息.事务消息.支持 Qos0.Qos1 消费者(客户端) 订阅.取消订阅.消费-ACK(自动.手动) 服务端 ...

  3. Oracle ORA-12725 unmatched parentheses in regular expression

    Oracle ORA-12725 unmatched parentheses in regular expression 简单来说就是正则表达式中的括号问题 这种一般就可以锁定使用正则的函数,例如 r ...

  4. 云原生DevOps的5步升级路径

    简介: 究竟什么是云原生DevOps呢?我们认为:云原生DevOps是充分利用云原生基础设施,基于微服务/无服务架构体系和开源标准,语言和框架无关,具备持续交付和智能自运维能力,从而做到比传统DevO ...

  5. 如何定位并修复 HttpCore5 中的 HTTP2 流量控制问题

    ​简介:开篇吹一波阿里云性能测试服务 PTS,PTS 在 2021 年 5 月份已经上线了对 HTTP2 协议的支持(底层依赖 httpclient5),在压测时会通过与服务端协商的结果来决定使用 H ...

  6. KubeMeet|聊聊新锐开源项目与云原生新的价值聚焦点

    ​简介: 10 月 16 日上海,OAM/KubeVela.OpenKruise.OCM 三大开源项目的社区负责人.核心贡献者和企业用户将齐聚 KubeMeet,和现场 100 名开发者聊聊新的技术环 ...

  7. 鸿蒙HarmonyOS实战-ArkUI事件(键鼠事件)

    前言 键鼠事件是指在计算机操作中,用户通过键盘和鼠标来与计算机进行交互的行为.常见的键鼠事件包括按下键盘上的键.移动鼠标.点击鼠标左键或右键等等.键鼠事件可以触发许多不同的操作,比如在文本编辑器中输入 ...

  8. 第3讲-Cadence分裂元件的制作方法

    笔记3-Cadence分裂元件的制作方法 1.Homogeneous和heterogeneous的区别: 2.创建homogeneous类型元件: 3.创建heterogeneous类型元件. 把元件 ...

  9. WebStorm2023安装prettier并生效

    1.首先去File > Settings > Plugins 里下载并install插件 Prettier 2.在settings里搜索prettier,按图片所示设置一下Apply 3. ...

  10. 入门Semantic Kernel:OneApi集成与HelloWorld

    引言 从这一章节开始正式进入我们的 Semantic Kernel 的学习之旅了. 什么是Semantic Kernel? Semantic Kernel是一个轻量级的开源框架,通过 Semantic ...