基数排序----非比较型排序
来源:互联网 发布:mac终端输入密码错误 编辑:程序博客网 时间:2024/06/06 08:20
testBS(){int a[] = {2,343,342,1,123,43,4343,433,687,654,3};int *a_p = a;//计算数组长度int size = sizeof(a)/sizeof(int);//基数排序bucketSort3( a_p , size );//打印排序后结果int i ;for(i = 0 ; i < size ; i++ ) {printf("%d\n ",a[i]);}int t;scanf("%d",t);}//基数排序void bucketSort3(int *p , int n){//获取数组中的最大数int maxNum = findMaxNum( p , n );//获取最大数的位数,次数也是再分配的次数。int loopTimes = getLoopTimes(maxNum);int i ;//对每一位进行桶分配for( i = 1 ; i <= loopTimes ; i++) {sort2(p , n , i );}}//获取数字的位数int getLoopTimes(int num){int count = 1 ;int temp = num/10;while( temp != 0 ) {count++;temp = temp / 10;}return count;}//查询数组中的最大数int findMaxNum( int *p , int n){int i ;int max = 0;for( i = 0 ; i < n ; i++) {if(*(p+i) > max) {max = *(p+i);}}return max;}//将数字分配到各自的桶中,然后按照桶的顺序输出排序结果void sort2(int *p , int n , int loop){//建立一组桶 此处的20是预设的 根据实际数情况修改int buckets[10][20] = {} ;//求桶的index的除数//如798 个位桶index = ( 798 / 1 ) % 10 = 8// 十位桶index = ( 798 / 10 ) % 10 = 9// 百位桶index = ( 798 / 100 ) % 10 = 7// tempNum 为上式中的1、10、100int tempNum = (int) pow(10 , loop-1);int i , j ;for( i = 0 ; i < n ; i++ ) {int row_index = (*(p+i) / tempNum) % 10;for(j = 0 ; j < 20 ; j++) {if(buckets[row_index][j] ==NULL) {buckets[row_index ][j] = *(p+i) ;break;}}}//将桶中的数,倒回到原有数组中int k = 0 ;for(i = 0 ; i < 10 ; i++) {for(j = 0 ; j < 20 ; j++) {if(buckets[i][j] != NULL) {*(p + k ) = buckets[i][j] ;buckets[i][j]=NULL;k++;}}}}
一句话说清楚:
从个位到高位按位进行排序
0 0
- 基数排序----非比较型排序
- 内部非比较排序---基数排序
- 非比较排序-----计数排序,基数排序。
- 非比较排序---计数排序&基数排序
- 非比较排序:计数排序和基数排序
- 非比较排序—计数排序&基数排序
- 【排序五】非比较排序(计数排序&&基数排序)
- 非比较排序——计数排序和基数排序
- 非比较排序—计数排序和基数排序
- 【数据结构】非比较排序--计数排序和基数排序
- 三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序
- 基于非比较的排序:计数排序(countSort),桶排序(bucketSort),基数排序(radixSort)
- 三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序
- 三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序
- 排序算法(六)非比较排序----计数排序和基数排序
- 【数据结构】非比较排序算法(实现计数排序和基数排序)
- (数据结构)非比较排序-计数排序、基数排序的分析与实现
- 计数排序---非比较型排序
- JB开发之问题汇总 [jailbreak,越狱技术]
- java多线程01
- Java应用级产品开发平台APDPlat
- Android Looper和Handler
- VS 2010 winform 设计器
- 基数排序----非比较型排序
- 九度OJ 1387 斐波那契数列
- Media Foundation学习笔记(四)Media Foundation的架构 Platform API
- iOS 7用户界面过渡指南
- python 中with的用法
- 什么是哈希表
- centOS目录结构详细版
- fedora 11安装 samba 全过程(yum 和源码级编译)
- oracle产品下载地址