基数排序是逻辑的关键字组成的多个关键字的组合,一步一个脚印的每个关键字顺序是行号,如果这些关键字,都记录为: K0K ^0,K1K ^1,…,Kr − 1 K ^ {r-1},其中 K0K ^0 是最重要的关键字在此记录和 Kr − 1 K ^ {r 1} 的最低有效关键字。如果排序,从最高有效关键字启动 MSD,如果从最低有效关键字排序的排序开始变得迷幻剂。 函数radix_sort对记录进行MAX_DIGIT遍扫描,每遍的处理时间为O(RADX_SIXE+n),所以,总的计算时间为O(MAX_DIGIT(RADIX_SIXE+n)).
版权声明:本文为博主原创文章,未经博主允许不得转载。
例如,一个由若干位组成和成员的整数为有秩序的、 使人感到其最正确的数字,是最低有效位和最左边的数字比特是最高有效位,像整数的范围为 0 < = K < = 999,所以可以在使用进行排序,迷幻剂或 MSD 的方法有三个关键词 (K0K ^0K1K ^1,k2k ^2),其中 k0k ^0 是几百晌的数字,k1k ^1 为十位上的数字和 K2K ^2 位数的数字上,以来的所有关键字属于 0 = < Kik ^ 我 < = 9 的范围,所以每个关键字排序只是 10 盒。
假定输入的序列是 (179,208,306,93,859,984,55,9,271,33) 技术,如下所示:
代码实现:#include<stdio.h> #define MAX_SIZE 100 #define MAX_DIGIT 3 #define RADX_SIZE 10 typedef struct list_node *list_pointer; typedef struct list_node { int key[MAX_DIGIT]; list_pointer link; }; //基数LSD排序 list_pointer radix_sort(list_pointer ptr) { list_pointer front[RADX_SIZE],rear[RADX_SIZE]; int i,j,digit; //从最低关键字进行排序 for(i=MAX_DIGIT;i>=0;i--) { for(j=0;j<RADX_SIZE;j++) front[j]=rear[j]=NULL; while(ptr) { //获取值作为箱子的索引 digit=ptr->key[i]; //是否第一个元素 if(!front[digit]) front[digit]=ptr; else rear[digit]->link=ptr; rear[digit]=ptr; ptr=ptr->link; } ptr=NULL; //寻找第一个元素不为空的最小箱子索引,为下一个关键字排序做准备 for(j=RADX_SIZE-1;j>=0;j--) { if(front[j]) { rear[j]->link=ptr;ptr=front[j]; } } } return ptr; }
本网页所有文字内容由 imapbox邮箱云存储,邮箱网盘, iurlBox网页地址收藏管理器 下载并得到。
ImapBox 邮箱网盘 工具地址: https://www.imapbox.com/download/ImapBox.5.5.1_Build20141205_CHS_Bit32.exe
PC6下载站地址:PC6下载站分流下载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox 网页视频 工具地址: https://www.imapbox.com/download/ImovieBox4.7.0_Build20141115_CHS.exe
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 程序员专区