查找与排序:利用基数排序对0~100范围内数据实现排序
2014-01-17 01:06
357 查看
查找与排序:利用基数排序对0~100范围内数据实现排序
数据结构实训。基数排序有什么用呢,效率又不出众~
在排序过程中数字的数目是不变的。在把数字分类和收集的过程循环实现。
细节+代码:
#include<stdio.h>
#include<math.h>
struct re{ //用于放分类的数字的数组。
int b[20];
int count;
}key[20];
int N;
int get(int a,int n){ //取出相应数位上的数字。
int i,k,part;
k = a;
for(i = 0;i<=n-1;i++)
k = k/10;
part = k%10;
return part;
}
int sort(int a[],int j){ //把数字放到其数位对应的数字的数组里。
int i,self;
for(i = 0;i<=20;i++)
key[i].count = 0;
for(i = 0;i<=N-1;i++){
self = get(a[i],j);
key[self].b[key[self].count] = a[i];
key[self].count++;
}
return 0;
}
int together(int a[]){ //把分好类的数字按顺序放回一个数组里。
int g,j,i;
g = 0;
for(i = 0;i<=8;i++){
for(j = 0;j<=key[i].count-1;j++){
a[g] = key[i].b[j];
g++;
}
}
return 0;
}
int main(){
int i,a[200];
scanf("%d",&N); //数字的数量。
for(i = 0;i<=N-1;i++)
scanf("%d",&a[i]);
for(i = 0;i<=2;i++){
sort(a,i);
together(a);
}
for(i = 0;i<=N-1;i++) //排好序后输出。
printf("%d ",a[i]);
printf("\n");
return 0;
}
/* 测试案例:
*
* 输入:
* 10
* 100 23 24 56 76 78 89 23 45 65 29
* 输出:
* 23 23 24 45 56 65 65 76 78 100
*/
数据结构实训。基数排序有什么用呢,效率又不出众~
在排序过程中数字的数目是不变的。在把数字分类和收集的过程循环实现。
细节+代码:
#include<stdio.h>
#include<math.h>
struct re{ //用于放分类的数字的数组。
int b[20];
int count;
}key[20];
int N;
int get(int a,int n){ //取出相应数位上的数字。
int i,k,part;
k = a;
for(i = 0;i<=n-1;i++)
k = k/10;
part = k%10;
return part;
}
int sort(int a[],int j){ //把数字放到其数位对应的数字的数组里。
int i,self;
for(i = 0;i<=20;i++)
key[i].count = 0;
for(i = 0;i<=N-1;i++){
self = get(a[i],j);
key[self].b[key[self].count] = a[i];
key[self].count++;
}
return 0;
}
int together(int a[]){ //把分好类的数字按顺序放回一个数组里。
int g,j,i;
g = 0;
for(i = 0;i<=8;i++){
for(j = 0;j<=key[i].count-1;j++){
a[g] = key[i].b[j];
g++;
}
}
return 0;
}
int main(){
int i,a[200];
scanf("%d",&N); //数字的数量。
for(i = 0;i<=N-1;i++)
scanf("%d",&a[i]);
for(i = 0;i<=2;i++){
sort(a,i);
together(a);
}
for(i = 0;i<=N-1;i++) //排好序后输出。
printf("%d ",a[i]);
printf("\n");
return 0;
}
/* 测试案例:
*
* 输入:
* 10
* 100 23 24 56 76 78 89 23 45 65 29
* 输出:
* 23 23 24 45 56 65 65 76 78 100
*/
相关文章推荐
- bitmap实现数据查找和排序
- 利用施瓦茨排序获得范围数据的并集
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- 【转|记录】如何实现按距离排序、范围查找
- [转] 如何实现按距离排序、范围查找
- 基于MySQL实现按距离排序、范围查找
- C#中的delegate以及利用List<T>中delegate快速实现排序、查找
- 利用哈希表实现数据查找
- 使用bitmap对一个大小在一定范围内的无重复数据排序(比如电话号码)|在一个大小在一定范围内的数据集中查找重复数据
- 二分法查找和快速排序 二分法是分治算法的一种特殊形式,利用分治策略求解时,所需时间取决于分解后子问题的个数、子问题的规模大小等因素,而二分法,由于其划分的简单和均匀的特点,是查找数据时经常采用的一种有
- 59.排序好的大数据创建索引文件,并实现大文件的二分查找,根据索引百万数据秒读数据
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- 数据结构之二分法查找、快速排序思想与实现
- 基于MySQL实现按距离排序、范围查找geoHash
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- W. :利用合并排序和二分查找实现习题2.3-7
- [并发编程]并发编程第一篇:利用并发编程,实现查找大量数据中的素数
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- 利用c语言的qsort与bsearch实现排序与查找
- 怎样实现按距离排序、范围查找