Java教程

数据结构与算法-排序算法(空间换时间算法)

本文主要是介绍数据结构与算法-排序算法(空间换时间算法),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数据结构与算法-排序算法(空间换时间算法)

1、计数排序

package suanfa;

import java.util.Arrays;

public class MySort {

    public void countingSort(int[] data){
        int max=data[0];
        int min=data[0];
        for(int value:data){
            if(value<min){
                min=value;
            }
            if(value>max){
                max=value;
            }
        }


        int[] temp=new int[max-min+1];
        for(int value:data){
            temp[value-min]++;
        }
        int index=0;
        for(int i=0;i<temp.length;i++){
            while(temp[i]>0){
                data[index++]=i+min;
                temp[i]--;
            }
        }

    }

    public static void main(String[] args){
        int[] data=new int[]{9,8,7,65,4,3,32,223,1};
        MySort mySort=new MySort();
        mySort.countingSort(data);
        for(int value:data){
            System.out.println(value);
        }
    }
}

2、基数排序

package suanfa;

import java.util.Arrays;

public class MySort {


    public void radixSort(int[] data){
        int[][] bucket=new int[10][data.length];
        int max=data[0];
        for(int value:data){
            if(value>max){
                max=value;
            }
        }
        int len=(max+"").length();
        for(int i=0;i<len;i++){
            int[] index=new int[10];
            for(int value:data){
                int x=(int)(value/Math.pow(10,i))%10;
                bucket[x][index[x]++]=value;
            }

            int s=0;
            for(int k=0;k<10;k++){
                for(int j=0;j<index[k];j++){
                    data[s++]=bucket[k][j];
                }
            }
        }
    }

    public static void main(String[] args){
        int[] data=new int[]{9,8,7,65,4,3,32,223,1};
        MySort mySort=new MySort();
        mySort.radixSort(data);
        for(int value:data){
            System.out.println(value);
        }
    }
}

这个基数排序也可以用于字符串的字典序排序(逐位比较)先比较最低位,最低位数相同的放进桶中,然后再比较十位、百位。。。。。。。

这篇关于数据结构与算法-排序算法(空间换时间算法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!