首页 > 代码库 > 排序算法

排序算法

1.选择排序

// 选择排序   每次扫描找出最小的那个,放到正确的位置。    public static int [] sort1(int [] data) {        if(data =http://www.mamicode.com/= null) {            return null;        }        int minIndex = 0;        for(int i=0; i<data.length; i++) {            minIndex = i;            // 找出最小元素的索引            for(int j=i+1; j<data.length; j++) {                if(data[j] < data[minIndex]) {                    minIndex = j;                }            }            // 放到正确的位置            if(minIndex != i) {                int temp = data[i];                data[i] = data[minIndex];                data[minIndex] = temp;            }        }        return data;    }

2.冒泡排序

// 冒泡排序   交换相邻的两个素,每一轮都会将最大的放到后面。    public static int [] sort2(int [] data) {        if(data =http://www.mamicode.com/= null) {            return null;        }        boolean flag = false;        for(int i=1; i<=data.length; i++) {            for(int j=0; j<data.length - i - 1; j++) {                if(data[j] > data[j+1]) {                    int temp = data[j];                    data[j] = data[j+1];                    data[j+1] = temp;                    flag = true;                }            }            if(!flag) {                break;            }        }        return data;    }

3.插入排序

// 插入排序   将新的元素插入到已排好序的列表中。    public static int [] sort3(int [] data) {        if(data =http://www.mamicode.com/= null) {            return null;        }        for(int i=1; i<data.length; i++) {            int temp = data[i];            int j = i - 1;            for(; j>=0; j--) {                if(data[j] > temp) {                    data[j+1] = data[j];                } else {                    break;                }            }            data[j+1] = temp;        }        return data;    }

4.快速排序

// 快速排序   使用分治的思想。    public static int partition(int [] data, int left, int right) {        int i = left;        int j = right;        int temp = data[i];        while(i < j) {            while(i < j && data[j] > temp) {                j--;            }            if(i < j) {                data[i] = data[j];//                data[j] = temp;            }            while(i < j && data[i] < temp) {                i++;            }            if(i < j) {                data[j] = data[i];//                data[i] = temp;            }        }        data[i] = temp;        return i;    }    public static int [] sort(int [] data, int left, int right) {        if(data =http://www.mamicode.com/= null) {            return null;        }        int dp = 0;        if(left < right) {            dp = partition(data, left, right);            sort(data, left, dp - 1);            sort(data, dp + 1, right);        }        return data;    }

 

先贴代码