冒泡排序

来源:互联网 发布:php培训班多少钱 编辑:程序博客网 时间:2024/06/05 16:40
public class BubbleSort {    /**     * 思路:每次内循环使相邻元素有序,单次循环后最大值沉底(升序时)     * 之后缩短内循环范围,继续上述操作,但是 有个问题,太冗杂     * 时间复杂度:O(N^2)     * 空间复杂度:O(1)     */    public static int[] bubble_one(int[] arrays,int length,boolean isUp){        int tmp;        for(int i = 0;i < length-1;i++){            for(int j = 0;j < length-1-i;j++){                if((arrays[j] > arrays[j+1])&&(isUp == true)){                    tmp = arrays[j];                    arrays[j] = arrays[j+1];                    arrays[j+1] = tmp;                }else if((arrays[j] < arrays[j+1])&&(isUp == false)){                    tmp = arrays[j];                    arrays[j] = arrays[j+1];                    arrays[j+1] = tmp;                }            }        }        return arrays;    }    /**     * 双向冒泡算法,在单向冒泡的基础上升级为往两边冒泡     *      */    public static int[] bubble_two(int[] arrays,int length,boolean isUp){        int head_index = 0;        int foot_index = length-1;        int tmp;        int index = 0;        while(head_index < foot_index){            for(int i = head_index;i<foot_index;i++){                if((arrays[i] > arrays[i+1])&&(isUp == true)){                    index = i;                    tmp = arrays[i];                    arrays[i] = arrays[i+1];                    arrays[i+1] = tmp;                }else if((arrays[i] < arrays[i+1])&&(isUp == false)){                    index = i;                    tmp = arrays[i];                    arrays[i] = arrays[i+1];                    arrays[i+1] = tmp;                }            }            foot_index = index;            for(int j = foot_index;j>head_index;--j){                if((arrays[j] < arrays[j-1])&&(isUp == true)){                    index = j;                    tmp = arrays[j];                    arrays[j] = arrays[j-1];                    arrays[j-1] = tmp;                }else if((arrays[j] > arrays[j-1])&&(isUp == false)){                    index = j;                    tmp = arrays[j];                    arrays[j] = arrays[j-1];                    arrays[j-1] = tmp;                }            }            head_index = index;        }        return arrays;    }}
原创粉丝点击