zoukankan      html  css  js  c++  java
  • 基数排序

    基数排序是一种非比较排序,它的时间复杂度为O(K*N),其中k是最大那个数的长度,

    基数排序其实是一种桶式排序的优化,它适用于N中数据比较大情况,一位一位的去排序最后得到我们要得到的序列

    解题代码:

     1 //基数排序
     2 #include <stdio.h>
     3 #define MAX 1000000
     4 void print(int *a, int n)
     5 {
     6   int i;
     7   for (i = 0; i < n; i++)
     8     printf("%d	", a[i]);
     9 }
    10  
    11 void radixsort(int *a, int n)
    12 {
    13   int i, b[MAX], m = a[0], exp = 1;
    14   for (i = 1; i < n; i++)
    15   {
    16     if (a[i] > m)
    17       m = a[i];
    18   }
    19  
    20   while (m / exp > 0)
    21   {
    22     int bucket[10] ={ 0 };
    23     for (i = 0; i < n; i++)
    24       bucket[(a[i] / exp) % 10]++;
    25     for (i = 1; i < 10; i++)
    26       bucket[i] += bucket[i - 1];
    27     for (i = n - 1; i >= 0; i--)
    28       b[--bucket[(a[i] / exp) % 10]] = a[i];
    29     for (i = 0; i < n; i++)
    30       a[i] = b[i];
    31     exp *= 10;
    32   }
    33 }
    34  
    35  
    36 int arr[MAX];
    37 int main()
    38 {
    39   int i, n;
    40  
    41   scanf("%d", &n);
    42  
    43   for (i = 0; i < n; i++)
    44     scanf("%d", &arr[i]);
    45   
    46   radixsort(&arr[0], n);
    47  
    48   print(&arr[0], n);
    49   printf("
    ");
    50  
    51   return 0;
    52 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    Linux tmux 工具
    HTML 注释
    HTML 引用
    HTML 格式化
    /etc/services
    Linux ss 命令
    Python cookielib 模块
    爬取需要登录的页面
    hasattr() 、getattr() 、setattr()
    爬取文本
  • 原文地址:https://www.cnblogs.com/zyue/p/3305683.html
Copyright © 2011-2022 走看看