2012/4/1----基数排序
来源:互联网 发布:出口网络推广 编辑:程序博客网 时间:2024/06/10 03:38
基数排序的核心思想是:把待排序的数组N中的数据分解成为个位,十位,百位.....然后再从个位开始排序,得到第一个数组N1,然后再把N1数组的十位进行排序得到N3,再对N3数组的百位进行排序得到N4,依次这样排序,直到数组中的所有数据的位数都用来排过序了,就可以得到我们所需要的排序数组了。
以下就是过程代码:
- /*
- * 基数排序的java实现
- * @version 1.0 2012/4/1
- * @author akon
- */
- package com.akon405.www;
- public class RadixSort {
- public RadixSort(int[] A,int a){
- int[][] temp=new int[10][A.length];
- int[] B=new int[10];
- int i,j,k,m;
- int n=1;
- for(i=1;i<=a;i++){
- int p=0;
- //想temp中存数据,数据来自A
- for(j=0;j<A.length;j++){
- k=A[j]/n%10;//A[j]基数位的数值:0--9
- temp[k][B[k]]=A[j];//存放在二维数组 中
- B[k]++;//起始值为初始化的0,由B[k]的数值可以得到在temp中的第k行存在多少个数值
- }
- //从temp中取数据到A
- for(j=0;j<10;j++){
- if(B[j]!=0){//如果二位数组temp所在的列存放的有数据,才对这列进行取数据操作
- for(m=0;m<B[j];m++){
- A[p]=temp[j][m];//按每次排序之后的顺序存放在A数组中
- p++;
- }
- }
- B[j]=0;//供下一次使用,
- }
- n=n*10;
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int[] A={21,19,1,8,76};
- int a=2;//数据的最大位数,这里最大为两位数,所以a为2
- System.out.print("排序结果:");
- new RadixSort(A,a);
- for(int i=0;i<A.length;i++){
- System.out.print(A[i]+",");
- }
- }
- }
0 0
- 2012/4/1----基数排序
- 数据结构 排序 基数排序(1)
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 基数排序
- 2012/3/30----冒泡排序
- 2012/3/31----计数排序
- Struts2使用action属性来接收参数
- MongoDB安装成为Windows服务及日常使用遇到问题总结
- openjdk和jdk的区别与联系
- 2012/4/1----基数排序
- windows8.1下使用eclipse的android游戏开发cocos2d-X环境搭建详细步骤整合(使用ndk不用cygwin)
- Vmware中提供的与网络通讯的三种网络模式的讲解:Bridge、NAT 、host-only
- Bullseye Coverage license破解笔记
- WinCE使用Webservice或者WCF与后台数据库SQL进行数据信息交互
- 2012/4/3----桶排序
- VC++2012编程演练数据结构《1》循环双端队列
- 关于用户的总结【收集中】
- 2012/4/4----随机选择法