C语言实现常用排序算法——基数排序
#include<stdio.h>
#include<math.h>
#define SIZE 10
#define C_SIZE 20 /*行数稳定=10,切记!列数务必搞的大一些,避免出现放不下的情况*/
void radix_sort(int *p,int n,int step);
void travel(int *p,int n);
int get_max(int *p,int n);
int get_digit(int x);
void out_sort(int *p,int n); main() {
int a[]= {,,,,,,,,,,,,,,,,,};
int *pa=a;
int i;
int n=sizeof(a)/sizeof(int);
travel(pa,n); out_sort(pa,n); travel(pa,n);
} void out_sort(int *p,int n) {
int max_n=get_max(p,n);
int loop=get_digit(max_n);
int i;
for(i=; i<=loop; i++) {
radix_sort(p,n,i);
}
} /*基数排序*/
void radix_sort(int *p,int n,int loop) {
int b[SIZE][C_SIZE]= {};
int i,j;
int tmp =(int)pow(,loop-);
for(i=; i<n; i++) {
int row_index = (*(p+i)/tmp)%;
for(j=; j<C_SIZE; j++) {
if(b[row_index][j] == ) {
b[row_index][j] = *(p+i);
break;
}
}
} int k=;
for(i=; i<SIZE; i++) {
for(j=; j<C_SIZE; j++) {
if(b[i][j]!= ) {
*(p+k)=b[i][j];
b[i][j]=;
k++;
}
}
}
}
/*遍历数组*/
void travel(int *p,int n) {
int i;
for(i=; i<n; i++) {
printf("%d,",*(p+i));
}
printf("\n");
} /*获取最大数字*/
int get_max(int *p,int n) {
int i;
int max_num=;
for(i=; i<n; i++) {
if(*(p+i)>max_num) {
max_num=*(p+i);
}
}
return max_num;
} /*获取最大数字的位数*/
int get_digit(int x) {
int count=;
int temp=x/;
while(temp!=) {
count++;
temp=temp/;
}
return count;
}
C语言实现常用排序算法——基数排序的更多相关文章
- C语言实现常用排序算法——插入排序
插入排序是最基础的排序算法,原理: 首先1个元素肯定是有序的,所以插入排序从第二个元素开始遍历:内循环首先请求一个空间保存待插入元素,从当前元素向数组起始位置反向遍历:当发现有大于待插入元素的元素,则 ...
- C语言实现常用排序算法——冒泡排序
原理:比较临近的两个元素,只要不符合顺序就进行交换:要点:1.不要越界:2.遍历一遍以后最大的元素就会到最后,所以下次遍历就不用遍历整个数组 void bubble_sort(int a[],int ...
- 我们一起来排序——使用Java语言优雅地实现常用排序算法
破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- 常用排序算法的python实现和性能分析
常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...
- Python实现常用排序算法
Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...
- Java常用排序算法及性能测试集合
测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...
- 转载部长一篇大作:常用排序算法之JavaScript实现
转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...
随机推荐
- Hibernate——(4)Hibernate映射类型
一.常用的Hibernat映射类型有如下几种: string integer double date 日期,只表示年月日 datetime 日期,只表示年月日 timestamp 时间戳,存放 ...
- struts2 no extension(excludePattern)
采用struts2 小伙伴非常希望更改或删除action扩展,本文将帮助你实现 struts2-core-2.3.16.jar , 下载链接: http://repo1.maven.org/maven ...
- numpy 维度与轴的问题
0. 多维数组的显示问题 >> X = np.reshape(np.arange(24), (2, 3, 4)) # 也即 2 行 3 列的 4 个平面(plane) >> X ...
- [Songqw.Net 基础]WPF实现简单的插件化开发
原文:[Songqw.Net 基础]WPF实现简单的插件化开发 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.net/songqingwei1988/ar ...
- WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果
原文:WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果 本以为Label也有TextChanged 事件,但在使 ...
- WPF - 善用路由事件
原文:WPF - 善用路由事件 在原来的公司中,编写自定义控件是常常遇到的任务.但这些控件常常拥有一个不怎么好的特点:无论是内部还是外部都没有使用路由事件.那我们应该怎样宰自定义控件开发中使用路由事件 ...
- [WPF疑难]ErrorTemplate显示与隐藏问题
原文:[WPF疑难]ErrorTemplate显示与隐藏问题 [WPF疑难]ErrorTemplate显示与隐藏问题 周 ...
- JQUERY名称冲突
jQuery 使用 $ 作为符号 jQuery 介绍的简单方法. 其他 JavaScript 库函数(例 Prototype)使用相同的 $ 符号. jQuery 使用命名 noConflict() ...
- jquery表单过滤器
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- jquery table 隔行变色+点谁谁变色
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...