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

    算法:

    1、将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。

    2、从最低位开始,依次进行一次排序。

    3、这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。

    01.#include <stdio.h>   
    02.#include <stdlib.h>   
    03.void radixSort(int data[]) {  
    04.    int temp[10][10] = {0};   
    05.    int order[10] = {0};   
    06.      
    07.    int n = 1;   
    08.    while(n <= 10) {   
    09.          
    10.        int i;  
    11.        for(i = 0; i < 10; i++) {   
    12.            int lsd = ((data[i] / n) % 10);   
    13.            temp[lsd][order[lsd]] = data[i];   
    14.            order[lsd]++;   
    15.        }   
    16.          
    17.        // 重新排列  
    18.        int k = 0;  
    19.        for(i = 0; i < 10; i++) {   
    20.            if(order[i] != 0)  {  
    21.                int j;  
    22.                for(j = 0; j < order[i]; j++, k++) {   
    23.                    data[k] = temp[i][j];   
    24.                }   
    25.            }  
    26.            order[i] = 0;   
    27.        }   
    28.        n *= 10;   
    29.    }       
    30.}  
    31.int main(void) {   
    32.    int data[10] = {73, 22, 93, 43, 55, 14, 28, 65, 39, 81};   
    33.        
    34.    printf("
    排序前: ");   
    35.    int i;  
    36.    for(i = 0; i < 10; i++)   
    37.        printf("%d ", data[i]);   
    38.    putchar('
    ');   
    39.    radixSort(data);  
    40.      
    41.    printf("
    排序後: ");   
    42.    for(i = 0; i < 10; i++)   
    43.        printf("%d ", data[i]);   
    44.    return 0;   
    45.}   
  • 相关阅读:
    前端工程化
    前端模块化CommonJS&ES6
    为什么浮点型运算结果会有误差?
    RequestAnimationFrame知多少?
    CSS三栏布局
    秋招面试
    实现Storage
    Angular
    TypeScript
    微服务架构设计模式
  • 原文地址:https://www.cnblogs.com/yl-saber/p/6933728.html
Copyright © 2011-2022 走看看