Java 简单算法--排序

1. 冒泡排序

package cn.magicdu.algorithm;

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = { 5, 7, 8, 4, 3, 9, 7, 6 };
        bubbleSort(arr);
    }

    /**
     * 冒泡排序
     * @param arr
     */
    private static void bubbleSort(int[] arr) {
        int temp=0;
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        bubblePrint(arr);
    }
    /**
     * 打印数组
     * @param arr
     */

    private static void bubblePrint(int[] arr) {
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        
    }
}

2.插入排序

package cn.magicdu.algorithm;

public class InsertSort {
    public static void main(String[] args) {
      int []arr={3,4,2,3,57,8,34,15};
      insertSort(arr);
    }

    /**
     * 插入排序
     * @param arr
     */
    private static void insertSort(int[] arr) {
        for(int i=0;i<arr.length;i++){
            int temp=arr[i];
            int j;
            for(j=i;j>0;j--){
                if(arr[j-1]>temp){
                    arr[j]=arr[j-1];
                }else{
                    break;
                }
            }
            arr[j]=temp;
        }
        insertPrint(arr);
    }

    /**
     * 打印数组
     * @param arr
     */
    private static void insertPrint(int[] arr) {
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        
    }
    
}

3.快速排序

package cn.magicdu.algorithm;

public class QuickSort {
    public static void main(String[] args) {
        int[] arr = { 1, 4, 6, 2, 3, 4, 7, 8, 9, 5, 65 };
        print(arr);
        quickSort(arr, 0, arr.length - 1);
        print(arr);
    }

    
    /**
     * 快速排序
     * @param arr
     * @param low
     * @param high
     */
    private static void quickSort(int[] arr, int low, int high) {
        
        if(low>=high){
            return;
        }
        if((high-low)==1){
            if(arr[0]>arr[1])
                swap(arr,0,1);
            return;
        }
        int pivot=arr[low];
        int left=low+1;
        int right=high;
        while(left<right){
            while(left<right&&left<=high){
                if(arr[left]>pivot)
                    break;
                left++;
            }
            while(left<=right&&right>low){
                if(arr[right]<=pivot)
                    break;
                right--;
            }
            if(left<right){
                swap(arr, right, left);
            }
        }
        swap(arr, low, right);
        quickSort(arr, low, right);
        quickSort(arr, right+1, high);
    }


    /**
     * 交换数字
     * @param arr
     * @param i
     * @param j
     */
    private static void swap(int[] arr, int i, int j) {
        
        int temp;
        temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }

    /**
     * 打印数组
     * @param arr
     */
    private static void print(int [] arr){
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+",");
        }
        System.out.println();
    }
}

 

posted @ 2016-10-17 20:57  破玉  阅读(257)  评论(0编辑  收藏  举报