java排序算法

class Demo_BubbleSort //冒泡
{
    public static void main(String[] args) 
    {
        //冒泡 相邻两个元素之间进行比较
        int[] arr = {3,4,1,5};
        for(int i=0;i<arr.length;i++){ //如果剩下最后一个元素 没有相邻的元素了 所以可以-1

            for(int j=0;j<arr.length-1-i;j++){ //-1是为了防止角标越界
                                        //-i 每一轮比较后 大的值跑到右侧 参与比较的元素都少一个

                if(arr[j]>arr[j+1]){

                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        printArray(arr);
    }
    public static void printArray(int[] arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+",");
        }
    }
}
class Demo_SelectSort //选择
{
    public static void main(String[] args) 
    {
        int[] arr = {11,7,10,4,2};

        for(int i=0;i<arr.length;i++){ //arr.length-1 最后一次 没有必要自己和自己比了
        //第一圈 用0角标的元素 依次和其他角标的元素进行比较 比完一圈 最小的出现在左侧
            for(int j=i+1;j<arr.length;j++){
                
                if(arr[i]>arr[j]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        printArray(arr);
    }
    public static void printArray(int[] arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+",");
        }
    }
}
class Demo_QuickSort//快排
{
    public static void main(String[] args) 
    {
        //快速排序
        int[] arr = {7,6,3,5,4,8,2};

        quickSort(arr,0,arr.length-1);
        printArray(arr);
    }
    public static void quickSort(int arr[],int L,int R){
        int i = L;
        int j = R;
        int p = arr[(L+R)/2];
        while(i<=j){
            while(arr[i]<p){
                i++;
            }
            while(arr[j]>p){
                j--;
            }
            if(i<=j){
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
                i++;
                j--;
            }
            //当第一轮结束后 比5小的 在5的左边 比5大的 在5的右边
            //递归
            //现在要做的事 将左边 和 右边的数据分别再进行快速排序 直到得到一个从小到大的序列
            if(L<j){
                quickSort(arr,L,j);
            }
            if(i<R){
                quickSort(arr,i,R);
            }
        }
    }
    public static void printArray(int[] arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+",");
        }
    }
}

 

posted @ 2017-07-18 09:46  牛皮的你,菜鸡的我  阅读(115)  评论(0)    收藏  举报