zoukankan      html  css  js  c++  java
  • 基数排序简单示例

    /*基数排序又称桶排序,原理是按照每一位分别进行排序,时间复杂度较低,适用于顺序和链式存储结构*/

    #include <stdio.h>

    #define D 2 //最大位数

    #define N 7 //数据个数

    int main ()

    {

        int buk[10][N] = { 0 };//存放按一位排序后数据的桶

        int in_len[10] = { 0 };//存放按位放到桶中的数,每一位分别有多少个

        int data[N] = { 15, 8, 21, 19, 30, 5, 0 };

        int i, j, k, m, n;

        int lsb;

        lsb = i = j = k = m = n = 0;

        for (i = 0; i < N; i++)

            printf ("%d ", data[i]);

        printf ("\n");

        for (i=0, n = 1; i < D; i++, n *= 10)

        {

            for (j = 0; j < 10; j++)

                in_len[j] = 0;

            m = 0;//用于从桶中放回时的下标

            for (j = 0; j < N; j++)

            {

                lsb = data[j] / n % 10;

                buk[lsb][in_len[lsb]++] = data[j];

            }

            for (j = 0; j < 10; j++)

            {

                for (k = 0; k < in_len[j]; k++)

                {

                    data[m++] = buk[j][k];

                }

            }

        }

        for (i = 0; i < N; i++)

            printf ("%d ", data[i]);

        printf ("\n");   

        return 0;

    }

    PS:我的程序文章大部分都借鉴了网上的内容,为的是给自己备忘,高手请勿见笑。

  • 相关阅读:
    真正的e时代
    在线手册
    UVA 10616 Divisible Group Sums
    UVA 10721 Bar Codes
    UVA 10205 Stack 'em Up
    UVA 10247 Complete Tree Labeling
    UVA 10081 Tight Words
    UVA 11125 Arrange Some Marbles
    UVA 10128 Queue
    UVA 10912 Simple Minded Hashing
  • 原文地址:https://www.cnblogs.com/liujiahi/p/2196374.html
Copyright © 2011-2022 走看看