最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#基數(shù)排序Radix sort的實(shí)現(xiàn)方法

 更新時間:2014年01月15日 14:42:49   作者:  
這篇文章主要介紹了c#基數(shù)排序Radix sort的實(shí)現(xiàn)方法,有需要的朋友可以參考一下

經(jīng)典排序算法 - 基數(shù)排序Radix sort

原理類似桶排序,這里總是需要10個桶,多次使用

首先以個位數(shù)的值進(jìn)行裝桶,即個位數(shù)為1則放入1號桶,為9則放入9號桶,暫時忽視十位數(shù)

例如

待排序數(shù)組[62,14,59,88,16]簡單點(diǎn)五個數(shù)字

分配10個桶,桶編號為0-9,以個位數(shù)數(shù)字為桶編號依次入桶,變成下邊這樣

|  0  |  0  | 62 |  0  | 14 |  0  | 16 |  0  |  88 | 59 |

|  0  |  1  |  2  |  3  |  4 |  5  |  6  |  7  |  8  |  9  |桶編號

將桶里的數(shù)字順序取出來,

輸出結(jié)果:[62,14,16,88,59]

再次入桶,不過這次以十位數(shù)的數(shù)字為準(zhǔn),進(jìn)入相應(yīng)的桶,變成下邊這樣:

由于前邊做了個位數(shù)的排序,所以當(dāng)十位數(shù)相等時,個位數(shù)字是由小到大的順序入桶的,就是說,入完桶還是有序

|  0  | 14,16 |  0  |  0  |  0  | 59 | 62  | 0  | 88  |  0  |

|  0  |  1      |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |桶編號

 

因?yàn)闆]有大過100的數(shù)字,沒有百位數(shù),所以到這排序完畢,順序取出即可

最后輸出結(jié)果:[14,16,59,62,88]

代碼僅供參考

復(fù)制代碼 代碼如下:

/// <summary>
        /// 基數(shù)排序
        /// 約定:待排數(shù)字中沒有0,如果某桶內(nèi)數(shù)字為0則表示該桶未被使用,輸出時跳過即可
/// </summary>
        /// <param name="unsorted">待排數(shù)組</param>
        /// <param name="array_x">桶數(shù)組第一維長度</param>
        /// <param name="array_y">桶數(shù)組第二維長度</param>
        static void radix_sort(int[] unsorted, int array_x = 10, int array_y = 100)
        {
            for (int i = 0; i < array_x/* 最大數(shù)字不超過999999999...(array_x個9) */; i++)
            {
                int[,] bucket = new int[array_x, array_y];
                foreach (var item in unsorted)
                {
                    int temp = (item / (int)Math.Pow(10, i)) % 10;
                    for (int l = 0; l < array_y; l++)
                    {
                        if (bucket[temp, l] == 0)
                        {
                            bucket[temp, l] = item;
                            break;
                        }
                    }
                }
                for (int o = 0, x = 0; x < array_x; x++)
                {
                    for (int y = 0; y < array_y; y++)
                    {
                        if (bucket[x, y] == 0) continue;
                        unsorted[o++] = bucket[x, y];
                    }
                }
            }
        }

        static void Main(string[] args)
        {
            int[] x = { 999999999, 65, 24, 47, 13, 50, 92, 88, 66, 33, 22445, 10001, 624159, 624158, 624155501 };
            radix_sort(x);
            foreach (var item in x)
            {
                if (item > 0)
                    Console.WriteLine(item + ",");
            }
            Console.ReadLine();
        }

相關(guān)文章

  • 深入理解StringBuilder的使用方法

    深入理解StringBuilder的使用方法

    下面小編就為大家?guī)硪黄钊肜斫釹tringBuilder的使用方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 基于C#實(shí)現(xiàn)WinForm開發(fā)操作系統(tǒng)的文件管理系統(tǒng)代碼

    基于C#實(shí)現(xiàn)WinForm開發(fā)操作系統(tǒng)的文件管理系統(tǒng)代碼

    基于C#的WinForm應(yīng)用程序來模擬操作系統(tǒng)文件管理系統(tǒng),可以幫助用戶在Windows環(huán)境下進(jìn)行文件的創(chuàng)建、移動、刪除與搜索等操作,這種模擬工具有助于學(xué)習(xí)文件系統(tǒng)的工作原理以及測試和開發(fā)其他軟件項(xiàng)目
    2024-12-12
  • .net使用cap實(shí)現(xiàn)消息異步處理

    .net使用cap實(shí)現(xiàn)消息異步處理

    CAP 是一個基于 .NET Standard 的 C# 庫,它是一種處理分布式事務(wù)的解決方案,同樣具有 EventBus 的功能,它具有輕量級、易使用、高性能等特點(diǎn),本文給大家介紹了.net下使用cap實(shí)現(xiàn)消息異步處理,需要的朋友可以參考下
    2024-05-05
  • C# 中string.split用法詳解

    C# 中string.split用法詳解

    本文給大家分享了C# 中string.split用法的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • C# 中this關(guān)鍵字的主要作用

    C# 中this關(guān)鍵字的主要作用

    this 關(guān)鍵字在C#中主要用于引用當(dāng)前對象,區(qū)分字段與局部變量,調(diào)用其他構(gòu)造函數(shù)以及傳遞當(dāng)前對象給其他方法或構(gòu)造函數(shù),本文重點(diǎn)介紹C# this關(guān)鍵字的作用,感興趣的朋友一起看看吧
    2024-02-02
  • C# Dictionary的使用實(shí)例代碼

    C# Dictionary的使用實(shí)例代碼

    C# Dictionary的使用實(shí)例代碼,需要的朋友可以參考一下
    2013-04-04
  • c#實(shí)現(xiàn)萬年歷示例分享 萬年歷農(nóng)歷查詢

    c#實(shí)現(xiàn)萬年歷示例分享 萬年歷農(nóng)歷查詢

    這篇文章主要介紹了c#實(shí)現(xiàn)萬年歷的方法,可以顯示農(nóng)歷、節(jié)氣、節(jié)日、星座、星宿、屬相、生肖、閏年月、時辰,大家參考使用吧
    2014-01-01
  • C#讀取寫入文件的3種方式示例代碼

    C#讀取寫入文件的3種方式示例代碼

    最近操作文件頻繁,所以這篇文章主要給大家介紹了關(guān)于C#讀取寫入文件的3種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-06-06
  • protobuf對象二進(jìn)制序列化存儲(詳解)

    protobuf對象二進(jìn)制序列化存儲(詳解)

    下面小編就為大家?guī)硪黄猵rotobuf對象二進(jìn)制序列化存儲(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • C#使用Selenium+PhantomJS抓取數(shù)據(jù)

    C#使用Selenium+PhantomJS抓取數(shù)據(jù)

    本文主要介紹了C#使用Selenium+PhantomJS抓取數(shù)據(jù)的方法步驟,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02

最新評論

垫江县| 苏尼特右旗| 蓬安县| 綦江县| 荃湾区| 夏邑县| 大姚县| 保德县| 宁安市| 郁南县| 潜山县| 漳平市| 会昌县| 阜阳市| 辽源市| 满洲里市| 团风县| 扶绥县| 北海市| 都昌县| 胶州市| 琼中| 高邮市| 永吉县| 嘉义县| 绵竹市| 南陵县| 通渭县| 林州市| 金塔县| 城口县| 屯留县| 遵义县| 辽中县| 益阳市| 改则县| 右玉县| 西平县| 理塘县| 行唐县| 余姚市|