• 基数排序LSD_Radix_Sort


    裸基数排序

    #include <iostream>
    using namespace std;
    struct list_
    {
        int v;
        int next;
    }a[1005];
    void print(list_ a[],int head)
    {
        for (int i = head; i != -1; i = a[i].next)
        {
            cout << a[i].v <<" ";
        }
        cout << endl;
    }
    int LSD_radix_sort(list_ a[],int head,int digit)
    {
        int first[10];
        int rear[10];
        int M = 1;
        for (int i = 1; i<=digit; i++)
        {
            for (int j = 0;j<=9;j++)
                first [j] = rear [j] = -1;
            int now = head;
            /***将数据分配到各个箱子中去***/
            while (head!=-1)
            {
                int radix = (a[head].v/M) % 10;
                if (first[radix] == -1)
                  first [radix] = rear [radix] = head;
                else
                {
                    a[rear[radix]].next = head;
                    rear[radix] = head;
                }
                head = a[head].next;
            }
            /***连接各个箱子***/
            int ptr = -1;
            for (int j = 9;j >=0 ; j--)
                if (first[j] != -1)
                {
                    a[rear[j]].next = ptr;
                    ptr = first[j];
                }
            head = ptr;
            print(a,head);
            M*=10;
        }
        return head;
    }
    int main ()
    {
        int n;
        int digit;
        cin >>n >> digit;
        for (int i =  1; i<=n; i++)
        {
            cin >> a[i].v;
            a[i].next = i+1;
        }
        a[n].next = -1;
        int head = LSD_radix_sort(a,1,digit);
        print(a,head);
    }
    LSD_Radix_Sort
  • 相关阅读:
    Chrony服务同步集群时间
    lsyncd+rsync实时同步
    iptables
    nginx 之 proxy_pass详解
    Ansible 中的 playbook 详解
    MySQL基本查询实战
    MySQL索引
    MySQL高可用方案——双主
    MySQL事务
    MySQL用户和权限管理
  • 原文地址:https://www.cnblogs.com/HITLJR/p/6227594.html
Copyright © 2020-2023  润新知