仪陇家园分类信息网、仪陇生活网、仪陇家园网

搜索

九大经典算法之基数排序、桶排序

[复制链接]
seo 发表于 2022-5-31 13:36:16 | 显示全部楼层 |阅读模式
九大经典算法之基数排序、桶排序发布时间:2022/5/31 12:52:59
            
                                                       
                                                       
            
        
        
               
                     
08 基数排序(Radix Sort)
基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。排序过程是将所有待比较数值统一为同样的数位长度,数位较短的数前面补零,然后从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。

  
  int getMax(int arr[], int n)
{
    int mx = arr[0];
    for (int i = 1; i )
        if (arr > mx)
            mx = arr;
    return mx;
}
void countSort(int arr[], int n, int exp)
{
    int output[n];
    int i, count[10] = {0};
  
    for (i = 0; i )
        count[ (arr/exp)%10 ]++;
  
    for (i = 1; i 10; i++)
        count += count[i - 1];
  
    for (i = n - 1; i >= 0; i--)
    {
        output[count[ (arr/exp)%10 ] - 1] = arr;
        count[ (arr/exp)%10 ]--;
    }
  
    for (i = 0; i )
        arr = output;
}
  
void radixsort(int arr[], int n)
{
    int m = getMax(arr, n);
    for (int exp = 1; m/exp > 0; exp *= 10)
        countSort(arr, n, exp);
}
  
空间效率:O(r)

时间效率:最好情况:O(d(n+r))                平均情况:O(d(n+r))                      最坏情况:O(d(n+r))   

稳定性(相同元素相对位置变化情况):稳定

09 桶排序(Bucket Sort)
桶排序的原理是将数组分到有限数量的桶中,再对每个桶子再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后将各个桶中的数据有序的合并起来。

排序过程:

[ol]
  • 假设待排序的一组数统一的分布在一个范围中,并将这一范围划分成几个子范围,也就是桶
  • 将待排序的一组数,分档规入这些子桶,并将桶中的数据进行排序
  • 将各个桶中的数据有序的合并起来[/ol]
      
      void bucketSort(int arr[], int n)
    {
        vectorfloat> b[n];
             
        for (int i=0; i)
        {
           int bi = n*arr;
           b[bi].push_back(arr);
        }   
       
        for (int i=0; i)
           sort(b.begin(), b.end());   
       
        int index = 0;
        for (int i = 0; i )
            for (int j = 0; j )
              arr[index++] = b[j];
    }
      
    空间效率:O(N+M)

    时间效率:最好情况:O(N)                平均情况:O(N)                        最坏情况:O(Nlog2N)   

    稳定性(相同元素相对位置变化情况):稳定


    转载于:https://www.cnblogs.com/wanghao-boke/p/10424469.html
                   
            
            
       
                
            
            
  • 回复

    使用道具 举报

    全部回复0 显示全部楼层

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    楼主

    审核员

    热门推荐

    联系客服 关注微信 下载APP 返回顶部 返回列表