成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

算法-java排序?qū)崿F(xiàn)總結(jié)

explorer_ddf / 1477人閱讀

摘要:一常見的排序算法及時間復(fù)雜度二各排序算法的理解及實現(xiàn)冒泡排序算法描述比較相鄰元素,如果第一個比第二個大,交換位置,這樣每經(jīng)過一趟就冒出一個最大的動圖演示代碼實現(xiàn)快速排序算法描述從數(shù)列中挑出一個元素,稱為基準(zhǔn)從左向右找比這個第一個比這個基

一.常見的排序算法及時間復(fù)雜度

二.各排序算法的理解及實現(xiàn) 1.冒泡排序(Bubble Sort)O(n2)

(1)算法描述

比較相鄰元素,如果第一個比第二個大,交換位置,這樣每經(jīng)過一趟就冒出一個最大的

(2)動圖演示

(3)代碼實現(xiàn)

 public static int[] bubbleSort(int arr[]){
        int len = arr.length;
       for(int i = 0;iarr[j+1]){
                   int temp = arr[j];
                   arr[j] = arr[j+1];
                   arr[j+1] = temp;
               }
           }
       }
       return arr;
    }
2.快速排序 O(nlog2n)

(1)算法描述

從數(shù)列中挑出一個元素,稱為"基準(zhǔn)"(pivot)

從左向右找比這個第一個比這個基準(zhǔn)大的數(shù),從右往左找第一個比這個基準(zhǔn)小的數(shù),找到后互換位置

繼續(xù)在此基礎(chǔ)上執(zhí)行第二步,直到兩個尋找指針相遇

遞歸的(recursive)把小于基準(zhǔn)值的序列和大于基準(zhǔn)值的序列排序

(2)動圖演示

 public static void quickSort(int[]arr, int left,int right) {
        if(left>right){return; }//遞歸的出口
        int i = left,j = right;
        int pivot = arr[left];//找到基準(zhǔn)
        while (i < j) {
            //從右向左找第一個比基準(zhǔn)值小的數(shù)
            while (i < j && arr[j] >= pivot) {
                j--;
            }
            //從左向右找第一個比基準(zhǔn)值大的數(shù)
            while (i < j && arr[i] <= pivot) {
                i++;
            }

            //兩面都找到后互換位置
            if (i < j) {
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
        //left=right時于基準(zhǔn)值互換
        int tmp = arr[j];
        arr[j] = arr[left];
        arr[left] = tmp;
        //分別遞歸的調(diào)用基準(zhǔn)值的左邊和右邊
        quickSort(arr,left,i-1);
        quickSort(arr,i+1,right);

    }
3.簡單插入排序 O(n2)

(1)算法描述

從第二個元素開始(因為認(rèn)為第一個元素已經(jīng)有序)向前掃描

如果前一個數(shù)小于當(dāng)前元素,繼續(xù)跳到下一個元素開始向前掃描

如果前一個數(shù)大于當(dāng)前元素,繼續(xù)向前掃描,直到找到小于這個數(shù)的元素,插到它的后面

(2)動圖演示

(3)代碼實現(xiàn)

  public static void insertSort(int[] array){
        int len = array.length;
        for(int i = 1;i0 && array[j-1]>temp;j--){
                //如果比待插入數(shù)大 ,向右移
                array[j] = array[j-1];
            }
            //如果比帶插入數(shù)小,插在該數(shù)后面
            array[j] = temp;
        }
4.希爾排序 O(nlogn)

(1)算法描述

其實就是對插入排序進(jìn)行了優(yōu)化,先對相同間隔的一組數(shù)進(jìn)行插入排序,使序列基本有序,再進(jìn)行間隔為1的插入排序時,減少工作量。(代碼實現(xiàn)可對照插入排序,其實就是多了一組循環(huán))

(2)動圖演示

(3)代碼實現(xiàn)

 public static void shellSort(int[] array){
        int len= array.length;
        int gap;//增量長度
        for(gap = len/2;gap>0;gap/=2){
            for(int i = gap;i gap && array[j - gap] > temp; j-=gap) {
                    //如果比待插入數(shù)大 ,向右移
                    array[j] = array[j - gap];
                }
                //如果比待插入數(shù)小,插在該數(shù)后面
                array[j] = temp;
            }
        }
    }
5.簡單選擇排序 O(n2)

(1)算法描述

將序列劃分為有序區(qū)和無序區(qū)(初始狀態(tài)有序區(qū)為空)

遍歷無序區(qū),選出最小的元素,放到有序區(qū)

(2)動圖演示

(3)代碼實現(xiàn)

   public static int[] selectSort(int array[]){
        for(int i=0;i
6.堆排序

(1)算法描述

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69107.html

相關(guān)文章

  • 十大經(jīng)典排序算法總結(jié)(Javascript描述)

    摘要:算法描述冒泡排序是一種簡單的排序算法。算法描述和實現(xiàn)一般來說,插入排序都采用在數(shù)組上實現(xiàn)。平均情況希爾排序年發(fā)明第一個突破的排序算法是簡單插入排序的改進(jìn)版它與插入排序的不同之處在于,它會優(yōu)先比較距離較遠(yuǎn)的元素。 前言 讀者自行嘗試可以想看源碼戳這,博主在github建了個庫,讀者可以Clone下來本地嘗試。此博文配合源碼體驗更棒哦~~~ 個人博客:Damonare的個人博客 原文地址:...

    Binguner 評論0 收藏0
  • 一個兩年Java的面試總結(jié)

    摘要:數(shù)據(jù)結(jié)構(gòu)和算法樹快速排序,堆排序,插入排序其實八大排序算法都應(yīng)該了解一致性算法,一致性算法的應(yīng)用的內(nèi)存結(jié)構(gòu)。如何存儲一個的。八大排序算法一定要手敲一遍快排,堆排尤其重要。面試是一個雙向選擇的過程,不要抱著畏懼的心態(tài)去面試,不利于自己的發(fā)揮。 前言 16年畢業(yè)到現(xiàn)在也近兩年了,最近面試了阿里集團(tuán)(菜鳥網(wǎng)絡(luò),螞蟻金服),網(wǎng)易,滴滴,點我達(dá),最終收到點我達(dá),網(wǎng)易o(hù)ffer,螞蟻金服二面掛掉,...

    anRui 評論0 收藏0
  • 七大排序算法總結(jié)(java)

    摘要:前面介紹了七大算法的思想與實現(xiàn)步驟,下面來做一個歸總。直到無序區(qū)中的數(shù)為零,結(jié)束排序。步驟以從小到大為例,排序數(shù)組大小為。比較完以后則排序結(jié)束。堆排序思想堆排序是采用樹的形式的數(shù)據(jù)結(jié)構(gòu)來進(jìn)行排序的,其中每一個堆都是完全二叉樹。 前面介紹了七大算法的思想與實現(xiàn)步驟,下面來做一個歸總。 排序方法 平均復(fù)雜度 最壞復(fù)雜度 最好復(fù)雜度 輔助空間 穩(wěn)定性 直接選擇排序 O(n^2...

    cartoon 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<