基礎算法系列

    最近一段時間比較的閒,沒有什麼項目要完成,沒有啥任務,沒事就複習起java了,看到數組的時候,就想着寫個排序算法的彙總,希望自己可以堅持下去,大約有七種排序方式吧,想着當初自己接觸java的時候就沒有好好看排序,總是感覺有工具類之類的,就沒有看重這些個東西,到後來才發現,這些基礎的東西也是很重要的,雖然說重複製造輪子沒有什麼用處,但我感覺那是對別人來說的,對於個人來說,這個過程是很重要的,沒有重複製造輪子的經歷,自己又怎麼能夠造車子呢。

**直接選擇排序的思想就是n個數據,經過 n-1 次排序可以得到有序的結果**

①:初始狀態,n 個無序狀態的數組
②:第一趟 得到無序區中最小的(最大也可)的數據,將其與第一個記錄交換位置 第二趟 得到 第二小的數據與 第二個位置進行交換
。。。。。
進過 n-1 次 即可得到有序數據
以下爲 直接選擇排序的 一種實現方法(可以有很多的變形實現)

@Test
    public void testSelectSort(){
        int[] arrSrc = {1, 2, 5, 6, 9, 48, 54, 25, 46, 75, 2, 87};
        // 這裏只需要對前 n-1 個做循環比較就可以了,因爲只要 n-1 個數據有序了,那麼最後一個要麼是最大的要麼是最小的
        for(int i=0; i< arrSrc.length-1; i++){
                int minIndex = i;//記錄當前循環的位置
            for(int j=i+1; j<arrSrc.length ; j++){
                if(arrSrc[minIndex]>arrSrc[j]){//如果 arrSrc[minIndex] 不是最小的那麼記錄下該位置
                        //比較重要的一步 記錄下最小值的位置
                        minIndex = j;
                }
            }
            //如果最小的位置已經變動了,那麼久交換數組元素的的位置
            if(minIndex != i) {
                int temp = arrSrc[i];
                arrSrc[i] = arrSrc[minIndex];
                arrSrc[minIndex] = temp;
            }
        }
        //輸出查看結果
        for(Integer num:arrSrc){
            System.out.print(num+"<>");
        }

    }

輸出結果:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章