最簡單最快的排序-桶排序

桶排序接受去google,直接上代碼:java

package com.taobao;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by zhangqidzq on 16/5/4.
 */
public class SortUtils {

    private static final int bucket_size = 950;

    public static List<DataVO> bucketSort(List<DataVO> dataVOs) {
        List<List<DataVO>> buckets = new ArrayList<List<DataVO>>(bucket_size);

        for (int i = 0; i < bucket_size; i++) {
            buckets.add(new ArrayList<DataVO>());
        }

        for (DataVO dataVO : dataVOs) {
            int k = dataVO.getSortfield();
            buckets.get(k).add(dataVO);
        }
        List<DataVO> sorted = new ArrayList<DataVO>();
        for (int i = bucket_size - 1; i >= 0; i--) {
            sorted.addAll(buckets.get(i));
        }
        return sorted;
    }


    public static void main(String[] args) {

        List<DataVO> list = new ArrayList<DataVO>();
        list.add(new DataVO(1, "1"));
        list.add(new DataVO(0, "0"));
        list.add(new DataVO(100, "100"));
        list.add(new DataVO(34, "34"));

        List<DataVO> result = bucketSort(list);
        for (DataVO dataVO : result) {
            System.out.println(dataVO.getName());
        }


    }
}

class DataVO {

    public DataVO(Integer sortfield, String name) {
        this.sortfield = sortfield;
        this.name = name;
    }

    private Integer sortfield;
    private String name;

    public Integer getSortfield() {
        return sortfield;
    }

    public void setSortfield(Integer sortfield) {
        this.sortfield = sortfield;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
相關文章
相關標籤/搜索