You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C#链表中的基数排序实现

以下是一个使用C#实现基数排序的示例代码:

using System;
using System.Collections.Generic;

public class RadixSort
{
    // 基数排序函数
    public static void RadixSortList(LinkedList<int> list)
    {
        // 找到最大值
        int max = FindMax(list);

        // 根据最大值的位数进行循环
        for (int exp = 1; max / exp > 0; exp *= 10)
        {
            CountingSort(list, exp);
        }
    }

    // 找到链表中的最大值
    private static int FindMax(LinkedList<int> list)
    {
        int max = int.MinValue;
        foreach (int num in list)
        {
            if (num > max)
            {
                max = num;
            }
        }
        return max;
    }

    // 计数排序
    private static void CountingSort(LinkedList<int> list, int exp)
    {
        LinkedList<int>[] buckets = new LinkedList<int>[10];

        // 初始化桶
        for (int i = 0; i < 10; i++)
        {
            buckets[i] = new LinkedList<int>();
        }

        // 将链表中的元素分配到桶中
        foreach (int num in list)
        {
            int bucketIndex = (num / exp) % 10;
            buckets[bucketIndex].AddLast(num);
        }

        // 将桶中元素按顺序放回链表
        list.Clear();
        foreach (LinkedList<int> bucket in buckets)
        {
            foreach (int num in bucket)
            {
                list.AddLast(num);
            }
        }
    }

    // 打印链表
    private static void PrintList(LinkedList<int> list)
    {
        foreach (int num in list)
        {
            Console.Write(num + " ");
        }
        Console.WriteLine();
    }

    // 测试
    public static void Main(string[] args)
    {
        LinkedList<int> list = new LinkedList<int>();
        list.AddLast(170);
        list.AddLast(45);
        list.AddLast(75);
        list.AddLast(90);
        list.AddLast(802);
        list.AddLast(24);
        list.AddLast(2);
        list.AddLast(66);

        Console.WriteLine("排序前:");
        PrintList(list);

        RadixSortList(list);

        Console.WriteLine("排序后:");
        PrintList(list);
    }
}

运行此代码将输出:

排序前:
170 45 75 90 802 24 2 66 
排序后:
2 24 45 66 75 90 170 802 

这是一个使用基数排序算法对链表进行排序的示例。基数排序适用于需要按照数字的每一位进行排序的情况。首先找到链表中的最大值,然后根据最大值的位数进行循环。在每一次循环中,使用计数排序算法将链表中的元素按照当前位数字分配到各个桶中,然后按照桶的顺序将元素放回链表。重复这个过程直到所有位数都被处理完毕。最后,打印排序后的链表。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

万字长文带你漫游数据结构世界|社区征文

线性结构:结构中的数据元素之间存在一个对一个的关系- 树形结构:结构中的数据元素之间存在一个对多个的关系- 图状结构或者网状结构:图状结构或者网状结构![](https://markdownpicture.oss-cn-qingdao.aliy... 计算机的世界里,充满哲学的味道。既然搜索效率有问题,那么我们不如给链表排个序。排序后的链表,还是只能知道头尾节点,知道中间的范围,但是要找到中间的节点,还是得走遍历的老路。如果我们把中间节点存储起来呢?存起...

LAS Spark 在 TPC-DS 的优化揭秘

TPC-DS 是一个模拟复杂数据仓库环境的测试基准,LAS Spark 通过采用规则优化、缓存优化和运行时优化三类优化策略,实现了超越社区版本的巨大性能提升,且已在内部生产环境得到验证。**文末更有专属彩蛋,新人优惠购福利... 会按照分区字段做一次 partition 内的局部排序. 但由于 `Q67` 中 window 的分区字段 `i_category` 的基数较少, 导致单个 task 数据较多,执行 `Sort + Window` 耗时很久。由于 Query 67 中 window 计算后紧跟着过...

LAS Spark 在 TPC-DS 的优化揭秘

TPC-DS 是一个模拟复杂数据仓库环境的测试基准,LAS Spark 通过采用规则优化、缓存优化和运行时优化三类优化策略,实现了超越社区版本的巨大性能提升,且已在内部生产环境得到验证。**文末更有专属彩蛋,新人优惠购福利... 会按照分区字段做一次 partition 内的局部排序. 但由于 `Q67` 中 window 的分区字段 `i_category` 的基数较少, 导致单个 task 数据较多,执行 `Sort + Window` 耗时很久。由于 Query 67 中 window 计算后紧跟着过...

干货|ClickHouse 在UBA系统中的字典编码优化实践

大多这类数据的事件属性都有低基数的特征,例如事件属性中的城市、性别、品牌等等。Parquet会自动对低基数列做字典编码,因此会获得更高的存储效率。 同时ClickHouse官方也提供了一种字典编码的解决方案即... 但社区版本中目前没有付诸实现。DataFinder 解决方案首先来看针对LowCardinality列Part Merge的优化方案。======================================这里先介绍下ClickHouse的Part Merg...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

C#链表中的基数排序实现-优选内容

万字长文带你漫游数据结构世界|社区征文
线性结构:结构中的数据元素之间存在一个对一个的关系- 树形结构:结构中的数据元素之间存在一个对多个的关系- 图状结构或者网状结构:图状结构或者网状结构![](https://markdownpicture.oss-cn-qingdao.aliy... 计算机的世界里,充满哲学的味道。既然搜索效率有问题,那么我们不如给链表排个序。排序后的链表,还是只能知道头尾节点,知道中间的范围,但是要找到中间的节点,还是得走遍历的老路。如果我们把中间节点存储起来呢?存起...
可视化查询常见 FAQ
该情况下无法进行同环比计算 解决 点击维度栏中的该维度,选择日期聚合方式。建议根据实际聚合为小时、天或月等。 可视化查询报错 Timeout exceeded可能原因 查询超时,可能受集群状态影响或查询数据量过大 解决方案... exceeded可能原因 查询数据量超出限制,或者 group by / count distinct 的基数太大,导致查询失败 解决方案 (1)缩短查询日期范围,减少查询数据量 (2)增加过滤条件,减少查询数据量 可视化查询报错 Memory limit (fo...
LAS Spark 在 TPC-DS 的优化揭秘
TPC-DS 是一个模拟复杂数据仓库环境的测试基准,LAS Spark 通过采用规则优化、缓存优化和运行时优化三类优化策略,实现了超越社区版本的巨大性能提升,且已在内部生产环境得到验证。**文末更有专属彩蛋,新人优惠购福利... 会按照分区字段做一次 partition 内的局部排序. 但由于 `Q67` 中 window 的分区字段 `i_category` 的基数较少, 导致单个 task 数据较多,执行 `Sort + Window` 耗时很久。由于 Query 67 中 window 计算后紧跟着过...
LAS Spark 在 TPC-DS 的优化揭秘
TPC-DS 是一个模拟复杂数据仓库环境的测试基准,LAS Spark 通过采用规则优化、缓存优化和运行时优化三类优化策略,实现了超越社区版本的巨大性能提升,且已在内部生产环境得到验证。**文末更有专属彩蛋,新人优惠购福利... 会按照分区字段做一次 partition 内的局部排序. 但由于 `Q67` 中 window 的分区字段 `i_category` 的基数较少, 导致单个 task 数据较多,执行 `Sort + Window` 耗时很久。由于 Query 67 中 window 计算后紧跟着过...

C#链表中的基数排序实现-相关内容

干货|ClickHouse 在UBA系统中的字典编码优化实践

大多这类数据的事件属性都有低基数的特征,例如事件属性中的城市、性别、品牌等等。Parquet会自动对低基数列做字典编码,因此会获得更高的存储效率。同时ClickHouse官方也提供了一种字典编码的解决方案即LowCardin... 原作者在做字典编码技术分享时也提到了针对高基数列时Fall back到原始列的构想,但社区版本中目前没有付诸实现## 解决方案首先来看针对LowCardinality列Part Merge的优化方案。这里先介绍下ClickHouse的Par...

一口气看完43个关于 ElasticSearch 的使用建议

Lucene 层面的缓存实现,封装在 LRUQueryCache 类中,默认开启。缓存的是某个 Filter 子查询语句在一个 Segment 上的查询结果。并非所有的 Filter 查询都会被缓存。对于体积较小的 Segment 不会建立 Query Cache,因... 不建议使用 `bucket\_sort`进行聚合深分页查询。**ES 的高 Cardinality 聚合查询非常消耗内存,超过百万基数的聚合很容易导致节点内存不够用以至 OOM。`bucket\_sort`使用桶排序算法,性能问题主要是由于它需要...

超越优价好物,实现体验领先,全球购平台的下一站在哪里?

## 零售平台的探索之路如何走得又快又好清晨在套有加拿大曼尼陀蚕丝枕套的枕头上美美醒来,洗漱后再给面部均匀涂抹上雅诗兰黛的乳液与面霜,然后为自己喷上祖·玛珑的香水……商品全球化时代,全球购已然成为不少品质人群生活中不可或缺的消费方式——数据显示,2021年仅在线上使用全球购的用户规模已经超过1.5亿。**支撑着这庞大基数的,是人们对于丰富商品选择与优良产品品质的永恒追求。**正是看到全球购零售平台能够为用户...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

人生大事「我的 2022 技术总结与盘点」|社区征文

https://juejin.cn/post/7125764751623192607)[ Swift 获取无序的整数序列的中位数(堆 + 归并)](https://juejin.cn/post/7126154813150068743)[Swift 堆排序详解](https://juejin.cn/post/7126583941389090824)[Swift 归并排序详解](https://juejin.cn/post/7127871892890845214)[LeetCode.415-字符串相加(Swift)](https://juejin.cn/post/7129849577661792263)[LeetCode.206-转链表(Swift](https://juejin.cn/post/71...

Redis 实战:巧用 Bitmap 实现亿级数据统计|社区征文

排序统计;4. 基数统计。本文将由**二值状态统计类型**作为实战篇系列的开篇,文中将用到 [String、Set、Zset、List、hash](https://mp.weixin.qq.com/s/8HN1PqqU57Kdz9ERwDY2cw) 以外的拓展数据类型 `Bitmap` 来实现。文章涉及到的指令可以通过在线 Redis 客户端运行调试,地址:https://try.redis.io/,超方便的说。## 寄语> 多分享多付出,前期多给别人创造价值并且不计回报,从长远来看,这些付出都会成倍的回报你。>> 特...

HaUniqueMergeTree

并行导入不同分区来实现线性增速。 唯一键支持多字段和表达式。 支持分区级别唯一和表级别唯一两种模式。 支持自定义版本字段,写入低版本数据时自动忽略。 多副本部署,通过主备异步复制保障数据可靠性。 支持根据U... `city` String, `category` String, `amount` UInt32, `revenue` UInt64)ENGINE = HaUniqueMergeTree('xxxxxxx')PARTITION BY toDate(event_time) --分区字段ORDER BY (city, category) --排序字段UNIQUE KEY...

什么是 EMR Serverless OLAP

1.1 StarRocks 产品特性特性 说明 MPP分布式执行框架 StarRocks 采用 MPP (Massively Parallel Processing) 分布式执行框架。在 MPP 执行框架中,一条查询请求会被拆分成多个物理计算单元,在多机并行执行。每个执行节点拥有独享的资源(CPU、内存)。MPP 执行框架能够使得单个查询请求可以充分利用所有执行节点的资源,所以单个查询的性能可以随着集群的水平扩展而不断提升。 全面向量化执行引擎 StarRocks 通过实现全面向量化引擎...

MongoDB 分片集群使用指南

设置合适的 shard key分片集群中数据的分片以集合为基础单位,集合中的数据通过分片键被分成多个部分。分片键是在集合中选择的一个或多个合适的字段,数据拆分时以该分片键的值为依据均衡地分布到所有分片中。如果您没有选择到合适的的分片键,可能会降低集群的使用性能,出现执行分片语句时执行过程卡住的问题。 说明 从 MongoDB 5.0 起,您可以通过 reshardCollection 命令来修改分片键,实现数据的重新分配。修改分片键的具体操作...

SDK上报配置

命中采样的数据才会上报,没有命中不会上报。业务配置采样比例一般根据DAU计算,如果希望采样到有效的性能数据,一般需要保证有几十万的用户基数。 修改SDK上报配置后,不会立即生效。客户端会每几小时定时拉取上报配置... 书写格式参考:["MyClass","MyClass2"]。 不支持 不支持 [] zombie对象采集白名单 只监控白名单中的类发生的zombie问题。书写格式参考:["MyClass","MyClass2"]。 不支持 不支持 [] dealloc堆栈最大数量 最...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询