经典排序——基数排序LSD——C语言版
来源:互联网 发布:openstack 源码分析 编辑:程序博客网 时间:2024/05/17 07:44
/*基数排序——LSD*//*一共10个桶,从个位开始,将元素按照每一位的数字分配到相应桶中,然后再重新收集,每次收集后,元素之间保持了相对位置(个位小的在前,经过重新分配后,依然保持个位小的在前)最后一次收集后元素将从小到大依次排列*/#include <stdio.h>#define digit 4 //几位数字,随便设置#define bucket_size 10 //每个桶的容量/*选取数字函数*/int number(int s,int i){ int k = 0,p; int cs; p=s; for(cs=0;cs<=i;cs++) { k=p%10; p=(p-k)/10; }//printf("%d\n",k); return k;}int LSD_sort(int s[],int length){ int i,j,num,p,k; int bucket[10][bucket_size]; /*向桶中插入元素,从低位向高位*/ for(i=0;i<digit;i++) { p=0; int bucket_num[10]={0,0,0,0,0,0,0,0,0,0}; //记录每个桶里插入了多少元素 /*第一次为创建空桶,以后每次将桶清空*/ for (k=0;k<10;k++) { for (j=0;j<bucket_size;j++) { bucket[k][j]=0; } } for(j=0;j<length;j++) { num=number(s[j],i);//选取数字 bucket[num][bucket_num[num]]=s[j];//将元素插入桶中 bucket_num[num]++;//相应桶的下一个位置 } /*重新收集元素*/ for (j=0;j<10;j++) { int t=0; while(bucket_num[j]!=0) { s[p]=bucket[j][t]; t++; p++; bucket_num[j]--; } } } return *s;}
0 0
- 经典排序——基数排序LSD——C语言版
- 经典排序——插入排序——C语言版
- 经典排序——冒泡排序——C语言版
- 经典排序——堆排序——C语言版
- 经典排序——希尔排序——C语言版
- 经典排序——归并排序——C语言版
- 经典排序——快速排序——C语言版
- 经典排序——桶排序——C语言版
- 经典排序算法之——基数排序
- 排序——基数排序
- 排序——基数排序
- 排序——基数排序
- 内部排序—基数排序
- 经典排序算法(10)——基数排序算法详解
- 数据结构(c语言版)学习笔记——排序算法
- 数据结构(c语言版)学习笔记——排序算法
- 深入浅出数据结构C语言版(16)——插入排序
- 排序——基数排序 收藏
- HashSet和LinkedHashSet练习
- STM32 端口复用&重映射(USART Remap)
- stm32串口通信调试总结
- andriod百分比布局
- 剑指Offer(第二版)面试题6:从尾到头打印链表
- 经典排序——基数排序LSD——C语言版
- 《天使爱美丽》附百度云盘链接
- 第3篇:angularJS使用ui-router的嵌套路由配置
- 使用OpenCL+OpenCV实现图像旋转(二)
- Linux中执行shell脚本的4种方法总结
- curl的超时时间设置
- 变量和基本类型---C++ 基础
- Python -Pandas 如何画柱状图?
- wsgi-01