首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

小弟我这是桶式排序吗

2012-08-13 
我这是桶式排序吗?我写的这算是桶式排序吗?有资格叫桶式排序吗?求问Java codepublic class Sort {public s

我这是桶式排序吗?
我写的这算是桶式排序吗?有资格叫桶式排序吗?求问

Java code
public class Sort {    public static void main(String[] args) {         Sort sort= new Sort();          int[] a={9,8,7,7,7,6,5,4,3,2,1};         sort.bucketSort(a,9 );         for(int i=0;i<a.length;i++)             System.out.println(a[i]);    }        //桶式排序    public void bucketSort(int[] a,int max){                 int[] buckets=new int[max+1];         for(int i=0;i<a.length;i++)             buckets[a[i]]++;         int j=0;         for(int i=0;i<buckets.length;i++)             if(buckets[i]>0)             {               for(int k=1;k<=buckets[i];k++)                 a[j++]=i;             }    }}


[解决办法]
确实没调试,之前有的是带 max 和 min 的,你这个去掉了min,所以临时改了下代码。

桶排的难度主要不在定序,而是是重排(也就是后半部分了)。


Java code
    public static void sort(int[] data, int max) {        // 桶        int[] buckets = new int[max + 1];        // 计算每个元素在桶出现的次数        for (int i = 0; i < data.length; i++)            buckets[data[i]]++;        // 计算“落入”各桶内的元素在有序序列中的位置           for (int i = 1; i < buckets.length; i++) {            buckets[i] = buckets[i] + buckets[i - 1];        }        // 将buckets中的元素完全复制到tmp数组中           int tmp[] = Arrays.copyOf(data, data.length);        // 根据buckets数组中的信息将待排序列的各元素放入相应位置           for (int k = data.length - 1; k >= 0; k--) {            data[--buckets[tmp[k]]] = tmp[k];        }    } 

热点排行