算法与数据结构 (六) 排序 三 非比较类的排序 基数排序

一 简介

排序(内部)可以从另一个方法分类,也就是比较类和非比较类。对于一个序列,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++;
        }
    }
}

  

猜你喜欢

转载自www.cnblogs.com/caijiwdq/p/11070867.html