数据结构与算法之基数排序

1.按位去排,最低位到最高位。数组作为参数例如({1,65,987,45,659,458,125,45}),假设就是以上数组,首先对个位铏排序,排序完在对十位进行排序,最后对百位进行排序,依次如此。

代码:

public static void BitSort(ref int[]array)

{

if(array!=null)

{

Dictionary> dic=null;

dic=IntDic(dic);
//最长的长度

int maxLength=0;

//取到最长的长度

for(int index=0;indexnumberList=dic[index];

foreach(var data in numberList)

{

temp[count++]=item;

}

}

//把临时数组赋值个原数组 排序成功

array=temp;

dic=IntDic(dic);
}

}

}

//取余数 拿到余数,然后把余数当作Dictionary字典的下标然后再把值进行插入

private static int GetCurrent(int number,int position)

{

//定义一个临时变量存储传入的实际值

int num=number;

//取第一个余数

int remainder=number%10;

//判断当前循环到第几位

while(position>1)

{

//每次运行到这里都把当前数往下移位

num=remainder/10;

//进行取余保存

remainder=num%10;

position--;

}

//返回余数  

return remainder;

}

//返回一个数的长度

private static int GetDigit(int number)

{

//防止突然有一个数是负数

int num=Math.Abs(number);

int digit=0;

while(num>0)

{

num=num/10;

digit++;

}

return digit;

}

private static void GetDigitUp(int number)

{

//取绝对值

int num=Math.Abs(number);

int digit=Convert.ToInt32(num.ToString().Length);

return digit;

}

//初始化容器

private static Dictionary> IntDic(Dictionary>dic)

{

dic=new Dictionary>();

for(int index=0;index<10;index++)

{

dic[index].Add(new List);

}

return dic;
}

 

你可能感兴趣的:(数据结构与算法排序专题,数据结构与算法之基数排序)