桶排序

一组有序桶,每个桶中表示一个数值范围(或一个数),将在该范围内的数放入该桶中,在该桶中继续进行排序

利用映射关系(数放入对应桶中),尽可能甚至完全不比较(不在各待排序数之间做比较)

用空间换时间:桶数量越多,排序越快

using System;

class Test
{
    static void Main()
    {
        int[] array = new int[] { 3, 5, 88, 7, 2, 7 };
        
        ShowArray(BucketSort(array));
        Console.ReadKey();
    }

    // 桶排序,假设对数据范围在0~1000的整数进行排序
    private static int[] BucketSort(int[] array, int maxValue = 1000)
    {
        int[] bucketArray = new int[maxValue + 1];
        foreach (var v in array)
        {
            bucketArray[v]++;
        }

        return bucketArray;
    }

    // 显示排好序的数组
    private static void ShowArray(int[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            for (int j = 0; j < array[i]; j++)
            {
                Console.WriteLine(i);
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。