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 ...
随机推荐
- XML DTD和XML Schema
CSDN原文.讲的很清楚.
- Virtualization of iSCSI storage
This invention describes methods, apparatus and systems for virtualization of iSCSI storage. Virtual ...
- 探索jquery方法中empty,remove与detach的区别
最近一直疑惑此三种方法的具体区别在于何处,随即想弄明白其具体的区别,看了一些说明,也依照官方文档,终于把这三个方法弄明白了,果然功夫不负有心人,继续努力. 上正文,先简单介绍下这三种方法 .empty ...
- SSH深度历险记(九) Struts2+DWZ+Uploadify多文件(文件和图片等。)上传
在gxpt_uas系统,为了实现文件(文件和图片等.,灵活配置)批量上传到mongodb,在学习的过程中,知道mongodb,功能,实现思路:在DWZ的基础上參考官方的实例结合现有的GXPT来实现,期 ...
- 分享一下Oracle 10g和Toad for Oracle的安装步骤
三年前用过Oracle,单纯的“用过”,主要就是说对数据库的一些操作,还不包含创建一些存储过程之类的,所以对Oracle仅仅只是了解一点儿,因为当时那家公司里面,数据库里面的东西都是那些顾问负责的,再 ...
- GFS读后笔记
GFS读后笔记 Q&A 为什么存储三个副本?而不是两个或者四个? ANS: 可能取得某些平衡点 Chunk的大小为何选择64MB?这个选择主要基于哪些考虑? ANS: GFS主要支持appen ...
- asp.net (webapi) core 2.1 跨域配置
原文:asp.net (webapi) core 2.1 跨域配置 官方文档 ➡️ https://docs.microsoft.com/zh-cn/aspnet/core/security/cors ...
- 用Nginx实现微信小程序本地SSL请求
我们在开发小程序的时候,需要填写一个授权域名.还要有一个证书.这些都是花钱的.开发非常不方便.本文主要讲解配置ssl和本地开发 小程序后台添加授权域名 这个域名你要写一个是备案过的.具体是不是你的,都 ...
- WPF 4 日期选择器(DatePicker)
原文:WPF 4 日期选择器(DatePicker) 前一篇<WPF 4 日历控件(Calendar)> 中我们对日历控件的使用方式有了基本了解,本篇将继续介绍WPF 4 中另一 ...
- WPF 验证错误模板
<Window x:Class="BindingExam.MainWindow" xmlns="http://schemas.microsoft.co ...