排序--1

排序,今天只看了冒泡,插入,快速三种排序算法分别对三组数据{3,15,7,20,9,3,12,17};{3,5,7,9,15,23,30,45};{45,30,23,15,9,7,5,3};进行处理。

##插入排序

package sort;


public class InsertSort {
    public static void main(String[] args) {
        long begin = System.nanoTime();
        int[] arr={3,15,7,20,9,3,12,17};
        for(int i=1;i<arr.length;i++){
            int t=i;
            for(int j=i-1;j>=0;j--){
                if(arr[t]<=arr[j]){
                    int temp=arr[t];
                    arr[t]=arr[j];
                    arr[j]=temp;
                    t--;
                }
                else
                    break;
            }
        }
        long end = System.nanoTime();
        OutPut(arr);
        System.out.print("\n");
        System.out.print((end-begin)+"ns");
    }

    private static void OutPut(int[] a){
        for(int i:a)
            System.out.print(i+"\t");
    }
}

插入排序对三组数据的处理时间结果:

##冒泡排序

package sort;

public class BubbleSort {

    public static void main(String[] args) {
        long begin = System.nanoTime();
        int[] arr={3,15,7,20,9,3,12,17};
        bubblesort(arr);
        long end = System.nanoTime();
        OutPut(arr);
        System.out.print("\n");
        System.out.print((end-begin)+"ns");
    }
    public static void bubblesort(int[] a){
        for(int i=0;i<a.length;i++)
            for(int j=i;j<a.length;j++)
                if(a[i]>a[j]){
                int temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
    }
    
    private static void OutPut(int[] a){
        for(int i:a)
            System.out.print(i+"\t");
    }
}

冒泡排序对三组数据的处理时间结果:

 

##快速排序

package sort;

public class QuickSort {

    public static void main(String[] args) {
        int[] arr={3,15,7,20,9,3,12,17};
        long begin = System.nanoTime();
        quicksort(arr,0,arr.length-1);
        long end = System.nanoTime();
        OutPut(arr);
        System.out.print("\n");
        System.out.print((end-begin)+"ns");
    }
    
    private static void quicksort(int[] a,int left,int right){
        int dp;
        if(left<right){
            dp=partition(a,left,right);
            quicksort(a,left,dp-1);
            quicksort(a,dp+1,right);
        }
    }

    private static int partition(int[] a, int left, int right) {
        int pivot=a[left];
        while(left<right){
            while(left<right&&a[right]>=pivot)
                right--;
            if(left<right)
                a[left++]=a[right];
            while(left<right&&a[left]<=pivot)
                left++;
            if(left<right)
                a[right--]=a[left];
        }
        a[left]=pivot;
        return left;
    }
    
    private static void OutPut(int[] a){
        for(int i:a)
            System.out.print(i+"\t");
    }
}

快速排序对三组数据的处理时间结果:

 

时间复杂度对比:

 

posted @ 2016-04-20 00:36  Rui_Jia  阅读(177)  评论(0编辑  收藏  举报