基数排序的数组/链表实现

本文介绍了基数排序的两种实现方式,分别是使用数组和链表。核心代码包括radixSortByArr()和radixSortByList()函数,前者通过数组进行计数,后者利用10个链表分别存储每个位的数字,按照位数从低位到高位进行排序。最后,文章提供了完整的C语言实现代码。
摘要由CSDN通过智能技术生成
/************************************************************
*基数排序
*使用数组/链表完成
*核心代码: radixSortByArr(int arr[], int n) / radixSortByList(int arr[], int n)
*使用数组实现的算法核心: res[ arr[i] ]+=1 ; //将待排序数组的值当作索引计数(res[20]=2;表示有2个20)
*使用链表实现的算法核心: 循环MaxBit次。从低位到高位,每次排序一位。
                          使用链表记录每次的排序结果,采用尾查法实现链表内部的排序
                          一趟排序结束,将结果输出到待排序数组中
*author: fangchang
*date:   2016/03/25
*time:   11:34
**************************************************************/


#include<stdio.h>
#include<stdlib.h>
#include<string.h>


#define N 5                        //待排序数的个数
#define RADIX_NUM 10               //桶的个数,0-9共10个数字,所以是10    


typedef struct node {              //链表的节点声明
int value;
struct node *next;
}*pnode;


void deleteList(pnode head);                 //清空链表
void insertInEnd(pnode head,int value);      //尾插
void answer1();
void radixSortByArr(int arr[], int n);      //使用数组实现基数排序(所有的数字都是正整数)


void answer2();
void radixSortByList(int arr[], int n);      //core code 
void printToArr(pnode radixArr[],int arr[], int n);
int findMax(int arr[] , int n);              //数组中的最大值
int maxBitNum(int value);                    //最大值的位数(111的位数是3)
int valueInBit(int value, int bitNum);       //返回指定位(bitNum)上的数字(0-9)
int main() {
//answer1();
answer2();
fflush(stdin);
getchar();
return 1;
}


void answer1(){                                 //使用数组完成基数排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值