首页 > 编程语言 > 详细

排序--1

时间:2016-04-20 01:48:42      阅读:247      评论:0      收藏:0      [点我收藏+]

排序,今天只看了冒泡,插入,快速三种排序算法分别对三组数据{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");
    }
}

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

技术分享

 

时间复杂度对比:

技术分享

 

排序--1

原文:http://www.cnblogs.com/Rui-Jia/p/5410915.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!