<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    athrunwang

    紀(jì)元
    數(shù)據(jù)加載中……
    java實(shí)現(xiàn)各種算法
    /**
     * 
     */
    package sortAlgorithm;
    import java.io.File;
    import java.io.IOException;
    import java.sql.Time;
    import java.util.Random;
    /**
     * @author sky
     * 該類給出各種排序算法
     *
     */
    public class sort{
    private static Integer[] elem(int n){
    int N=n;
    Random random=new Random();
    Integer elem[]=new Integer[N];
    for (int i=0;i<N;i++){
    elem[i]=random.nextInt(1000);
    }
    return elem;
    }
    public static void main (String Args[]) throws InterruptedException{
    int n=30000;
    Integer elem[]=elem(n);
    long start,end;
    class sort0 extends Thread{
    Integer elem[];
    int n;
    sort0(Integer elem[],int n){
    this.elem=elem;
    this.n=n;
    }
    public void run(){
    System.out.println("線程啟動(dòng)");
    straightInsertSort(elem,n);
    }
    }
    elem=elem(n);
    start=System.currentTimeMillis();
    sort0 s1=new sort0(elem,n);
    elem=elem(n);
    sort0 s2=new sort0(elem,n);
    elem=elem(n);
    sort0 s3=new sort0(elem,n);
    elem=elem(n);
    sort0 s4=new sort0(elem,n);
    elem=elem(n);
    sort0 s5=new sort0(elem,n);
    s1.start();
    s2.start();
    s3.start();
    s4.start();
    s5.start();
    s2.join();
    s1.join();
    s3.join();
    s4.join();
    s5.join();
    System.out.println("多線程簡(jiǎn)單插入排序:");
    end=System.currentTimeMillis();
    System.out.println(end-start);
    elem=elem(n);
    start=System.currentTimeMillis();
    straightInsertSort(elem,n);
    end=System.currentTimeMillis();
    System.out.println("簡(jiǎn)單插入排序:");
    System.out.println(end-start);
    elem=elem(n);
    start=System.currentTimeMillis();
    shellSort(elem,n);
    end=System.currentTimeMillis();
    System.out.println("希爾排序:");
    System.out.println(end-start);
    elem=elem(n);
    start=System.currentTimeMillis();
    bubbleSort(elem,n);
    end=System.currentTimeMillis();
    System.out.println("冒泡排序:");
    System.out.println(end-start);
    /*
       elem=elem(n);
    start=System.currentTimeMillis();
    quickSort(elem,n);
    end=System.currentTimeMillis();
    System.out.println("快速排序:");
    System.out.println(end-start);*/
    elem=elem(n);
    start=System.currentTimeMillis();
    simpleSelectionSort(elem,n);
    end=System.currentTimeMillis();
    System.out.println("簡(jiǎn)單選擇排序:");
    System.out.println(end-start);
    elem=elem(n);
    start=System.currentTimeMillis();
    heapSort(elem,n);
    end=System.currentTimeMillis();
    System.out.println("堆排序:");
    System.out.println(end-start);
    elem=elem(n);
    start=System.currentTimeMillis();
    mergeSort(elem,n);
    end=System.currentTimeMillis();
    System.out.println("歸并排序:");
    System.out.println(end-start);
    }
    //顯示排序結(jié)果
    public static <T extends Comparable<? super T>> void show(T[] elem,int n){
    for (int i=0;i<n;i++){
    System.out.print(elem[i]);
    System.out.print(' ');
    }
    System.out.println();
    }
    //交換元素
    private static <T extends Comparable<? super T>> void swap(T[] elem,int i,int j){
    T tmp=elem[i];
    elem[i]=elem[j];
    elem[j]=tmp;
    }
    //直接插入排序法,復(fù)雜度為O(n^2)
    public static <T extends Comparable<? super T>> void straightInsertSort (T elem[],int n){
    for (int i=1;i<n;i++){
    T e=elem[i];
    int j;
    for (j=i-1;j>=0 && e.compareTo(elem[j])<0;j--){
    elem[j+1]=elem[j];
    }
    elem[j+1]=e;
    }
    }
    //shell插入排序算法,復(fù)雜度為O(n^1.5)
    private static <T extends Comparable<? super T>> void  shellInsertHelp(T elem[],int n,int incr){
    for (int i=incr;i<n;i++){
    T e=elem[i];
    int j=i-incr;
    for (;j>=0 && e.compareTo(elem[j])<0;j=j-incr){
    elem[j+incr]=elem[j];
    }
    elem[j+incr]=e;
    }
    }
    public static <T extends Comparable<? super T>> void shellSort(T elem[],int n ){
    for (int incr=n/2;incr>0;incr=incr/2){
    shellInsertHelp(elem,n,incr);
    }
    }
    //冒泡排序算法,時(shí)間復(fù)雜度為O(n^2)
    public static <T extends Comparable<? super T>> void bubbleSort(T elem[],int n){
    for (int i=n-1;i>0;i--){
    for (int j=0;j<i;j++){
    if (elem[j].compareTo(elem[i])>0){
    swap(elem,i,j);
    }
    }
    }
    }
    //快速排序算法,時(shí)間復(fù)雜度為O(n*log(n))
    private static <T extends Comparable<? super T>> int partition(T elem[],int low,int high){
    while (low<high){
    for (;elem[high].compareTo(elem[low])>=0 && low<high;high--);
    swap(elem,high,low);
    for (;elem[high].compareTo(elem[low])>=0 && low<high;low++);
    swap(elem,high,low);
    }
    return low;
    }
    private static <T extends Comparable<? super T>> void quickSortHelp(T elem[],int low,int high){
    if (low<high){
    int pivot=partition(elem,low,high);
    quickSortHelp(elem,low,pivot-1);
    quickSortHelp(elem,pivot+1,high);
    }
    }
    public static <T extends Comparable<? super T>> void quickSort(T elem[],int n){
    quickSortHelp(elem,0,n-1);
    }
    //簡(jiǎn)單選擇排序算法,時(shí)間復(fù)雜度為O(n^2)
    public static <T extends Comparable<? super T>> void simpleSelectionSort(T elem[],int n){
    for (int i=0;i<n-1;i++){
    int lowIdx=i;
    for (int j=i+1;j<n;j++){
    if (elem[lowIdx].compareTo(elem[j])>0)
    lowIdx=j;
    }
    swap(elem,lowIdx,i);
    }
    }
    //堆排序,時(shí)間復(fù)雜度為O(n*log(n))
    private static <T extends Comparable<? super T>> void heapAdjust(T elem[],int low,int high){
    for (int i=low,lhs=2*i+1 ;lhs<=high;lhs=2*i+1){
    if (lhs<high && elem[lhs].compareTo(elem[lhs+1])<0)lhs++;
    if (elem[i].compareTo(elem[lhs])<0){
    swap(elem,i,lhs);
    i=lhs;
    }else break;
    }
    }
    public static <T extends Comparable<? super T>> void heapSort(T elem[],int n){
    //初始化堆
    for (int i=(n-2)/2;i>=0;i--){
    heapAdjust(elem,i,n-1);
    }
    swap(elem,0,n-1);
    //排序
    for (int i=n-2;i>0;--i){
    heapAdjust(elem,0,i);
    swap(elem,0,i);
    }
    }
    //歸并排序算法,時(shí)間復(fù)雜度為O(n*log(n))
    private static <T extends Comparable<? super T>> void simpleMerge(T elem[],T tmpElem[],int low ,int mid, int high){
    int i=low,j=mid+1,k=low;
    for (;i<=mid && j<=high;k++){
    if (elem[i].compareTo(elem[j])<=0)
    tmpElem[k]=elem[i++];
    else 
    tmpElem[k]=elem[j++];
    }
    for (;i<=mid;i++){
    tmpElem[k++]=elem[i];
    }
    for (;j<=high;j++){
    tmpElem[k++]=elem[j];
    }
    for (;low<=high;low++){
    elem[low]=tmpElem[low];
    }
    }
    private static <T extends Comparable<? super T>> void mergeHelp(T elem[],T tmpElem[],int low ,int high){
    if (low < high){
    int mid=(low+high)/2;
    mergeHelp(elem,tmpElem,low,mid);
    mergeHelp(elem,tmpElem,mid+1,high);
    simpleMerge(elem,tmpElem,low,mid,high);
    }
    }
    public static <T extends Comparable<? super T>> void mergeSort(T elem[],int n){
    T[] tmpElem=(T[])new Comparable[n];
    mergeHelp(elem,tmpElem,0,n-1);
    }
    }

    posted on 2012-05-08 21:48 AthrunWang 閱讀(368) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产亚洲av人片在线观看| 国产亚洲精品xxx| 黄色视屏在线免费播放| 好紧我太爽了视频免费国产 | 国产成人A亚洲精V品无码| 永久在线观看免费视频| 亚洲色婷婷综合开心网| 99热在线免费观看| 亚洲永久中文字幕在线| 99热在线免费播放| 日韩精品亚洲专区在线影视| 亚洲成色在线综合网站| 最近2019中文字幕免费看最新| 激情综合亚洲色婷婷五月| 亚洲一级毛片免费看| 亚洲免费中文字幕| 成人午夜视频免费| 日韩a级无码免费视频| 亚洲乱人伦中文字幕无码| 在线免费观看毛片网站| 欧洲人成在线免费| 黄色a三级三级三级免费看| 亚洲色图黄色小说| 亚洲色成人中文字幕网站| 99re6在线视频精品免费| 亚洲国产成人一区二区三区| 在线a人片天堂免费观看高清| 久久免费观看国产99精品| 日韩一级片免费观看| 亚洲偷自精品三十六区| 午夜色a大片在线观看免费| 日本在线免费观看| 一区二区免费在线观看| 亚洲精品国产综合久久久久紧| 亚洲免费视频在线观看| 亚洲国产一成人久久精品| 亚洲av无码天堂一区二区三区| av午夜福利一片免费看久久| 久久久久久亚洲精品| 无码精品A∨在线观看免费| 亚洲av成人一区二区三区观看在线 |