C语言实现基数排序——针对数字的实现方法
2011-10-08 22:31
489 查看
#define LENGTH 7 #include <math.h> void RadixSort(int ArrayToSort[], int digit) { int p,n,m,i,k; //low to high digit for( k = 1; k <= digit; k++) { //temp array to store the sort result inside digit int tmpArray[LENGTH] ={0}; //temp array for countingsort int tmpCountingSortArray[] = {0,0,0,0,0,0,0,0,0,0}; //CountingSort for( i = 0; i < LENGTH; i++) { //split the specified digit from the element int tmpSplitDigit = ArrayToSort[i]/(int)pow(10,k-1) - (ArrayToSort[i]/(int)pow(10,k))*10; tmpCountingSortArray[tmpSplitDigit] += 1; } for( m = 1; m < 10; m++) { tmpCountingSortArray[m] += tmpCountingSortArray[m - 1]; } //output the value to result for( n = LENGTH - 1; n >= 0; n--) { int tmpSplitDigit = ArrayToSort / (int)pow(10,k - 1) - (ArrayToSort /(int)pow(10,k)) * 10; tmpArray[tmpCountingSortArray[tmpSplitDigit]-1] = ArrayToSort ; tmpCountingSortArray[tmpSplitDigit] -= 1; } //copy the digit-inside sort result to source array for( p = 0; p < LENGTH; p++) { ArrayToSort[p] = tmpArray[p]; } } for(i = 0; i < LENGTH; i++) printf("%d ",ArrayToSort[i]); printf("\n"); }
相关文章推荐
- C语言实现将字符串转换为数字的方法
- C语言 解决不用+、-、×、÷数字运算符做加法的实现方法
- 使用递归方法实现数字反转 C语言实现
- C语言 解决不用+、-、×、÷数字运算符做加法的实现方法
- 一列数字的规则如下;1,1,2,3,5,8,13,21,34........ 求第30位数字是多少,用递规和非递归两种方法算法实现
- Java实现数字转成英文的方法
- C语言实现将数字颠倒
- C语言实现sqlite3数据库查询的基本方法
- JAVA中native方法调用C语言实现学习
- javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo
- C语言 判断字符是否是一个数字的两种方法
- C语言实现:约瑟夫问题(数组和单链表2种方法)
- JavaScript实现按照指定长度为数字前面补零输出的方法
- JS使用parseInt解析数字实现求和的方法
- C语言实现颠倒栈的方法
- C语言中将数字转换为字符串的方法
- C语言实现strlen函数的几种方法
- JS数字千分位格式化实现方法总结
- /*算法从9个数中取出3个3位数其中两个3位数相加等于另一个3位数其中每位数字不能重复,c语言怎么实现*/
- 整理用Java实现数字转化成字符串左边自动补零方法