算法与数据结构 (六) 排序 三 非比较类的排序 基数排序
一 简介
排序(内部)可以从另一个方法分类,也就是比较类和非比较类。对于一个序列,1 65 3 6 22 其它的几种排序都会比较内部的比较。比如1 和65比较。
而基数排序空间换时间也就是对于 上面的序列 先比较个位 也就是 1 22 3 65 6 第二轮 就是 1 3 6 22 65.对于计算机思想就是准备10个数组存储当前位是0 1 2 3....的数组
二 代码的简单实现
package sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class JiShu {
public static void main(String[] args) {
int arr[] = {1, 52, 32, 10, 23,150,89,9};
jiShu(arr,3);
System.out.println(Arrays.toString(arr));
}
public static void jiShu(int []arr,int length) {
List<Integer>[] list = new List[10];
for (int i = 0; i < list.length; i++) {
list[i] = new ArrayList<>();
}
int now = 0;
while(now<length) {
int number = (int)Math.pow(10, now);
for (int i = 0; i < arr.length; i++) {
int temp = arr[i] /number;
temp = temp % 10;
list[temp].add(arr[i]);
}
int temp = 0;
for (int k = 0; k < list.length; k++) {
if (list[k].size() != 0) {
for (int j = 0; j < list[k].size(); j++) {
arr[temp++] = list[k].get(j);
}
list[k].clear();
}
}
System.out.println("第"+(now+1)+"轮:"+Arrays.toString(arr));
now++;
}
}
}

浙公网安备 33010602011771号