財神娛樂首存即享優惠回饋唷~詳情請進👉

算法圖解之選骰骰子擇排序

假定你的計算機存儲了許多樂趣。關于每個樂隊,你都記載了其作品被播放的次數。

若是你要將這個列表按播放次數從多到少的次序擺列,從而將你喜歡的樂隊排序。該若何做呢?

我第一眼望到這個成績時,想到的是經由過程sql辦理這個成績
假定若是這是一個數據表的話,我很輕易就可以經由過程order by 字段名 desc進行降序排序(也便是從大到小)

無非我以為sql反而貧苦,因而轉用冒泡排序。代碼示例以下:

package cn.pratice.simple;

public class BubbleSort {

    
    static void main(String[] args) {
    
        int []539計算公式 arr = {156,141,1)"大眾>35,1)"大眾>94,1)"大眾>88,1)"大眾>61,1)公眾>111};
        
        System.out.println(公眾排序前數組為:公眾);
        for (int i = 0; i < arr.length; i++) {
            System.arr:公眾+arr[i]);
        }
        
        0; i < arr.length-1; i++) { //外層輪回節制排序趟數
                int j = 0; j < arr.length-1-i; j++) {內層輪回節制每一趟排序若干次
                    if(arr[j]>arr[j+1]) {
                        int temp = arr[j];
                        arr[j] = arr[j+];
                        arr[j+1]=temp;
                    }
                    
                }
            
        }
        System.排序后的數組為:arr[i]);
        }
    }
}

這段代碼的輸入效果是:

然則該效果輸入的是從小到大,顯然不切合我的指望。
趁便提一下冒泡排序的道理:比較兩個相鄰的元素,將值大的元故舊換至右端
無非以Java開發為例,一般環境咱們拿輪子內里的器材即可完成,以下面代碼所示:

package cn.pratice.simple;

import java.util.Arrays;

};
        
        arr[i]);
        }
        Arrays.sort(arr);
        
        arr[i]);
        }
        
    }
}

歸到正題,那末咱們若何將其地下六合彩玩法變為降序?完成代碼以下(仍是復用現有的輪子)

package cn.pratice.simple;
import java.util.Comparator;


 BubbleSort {

     main(String[] args) {

        Integer[] array = new Integer[] {  };
        java.util.Arrays.sort(array,new Comparator<Integer>() {
            int compare(Integer o1,Integer o2) {
                return o2 - o1;
            }
        });

        0; i < ar電競下注ray.length; i++) {
            Integer integer = array[i];
            System.integer:"大眾 + integer);
        }
    }
}

咱們再來望望選擇排序的例子:

long startTime = System.currentTimeMillis();    獵取最先時間

        int[] arr = new int[] { };
        System.互換前0; i < arr.length - 1; i++) {
            int k = i;
            int j = k + 1; j < arr.length; j++) {
                if(arr[j] < arr[k]) {
                    k = j;
                }
            }
            if(i地下539中4碼多少錢!=k) {
                 arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }
        }
        
        System.互換后:arr[i]);
        }
        
        
        
        long endTime = System.currentTimeMillis大樂透開獎號碼();    獵取收場時間

        System.法式運轉時間:公眾 + (endTime - startTime) + ms"大眾);    輸入法式運轉時間
    }
}

那末選擇排序的道理又是甚么呢?
每一趟從待排序的記載當選出最小的元素,次序放在已經排好序的序列最初,直到掃數記載排序終了。也便是:每一趟在n-i+1(i=1,2…n-1)個記載當選取樞紐字最小的記載作為有序序列中第i個記載。基于此思惟的有簡略選擇排序、樹形選擇排序以及堆排序。咱們目前所說的便是簡略排序。

最初比較一下冒泡排序以及簡略排序的區分(從觀點上闡發):
冒泡排序:
依次比較相鄰的兩個數,將小數放在后面,大數放在前面。即第一趟比較第一個以及第二個數,將小數放前,大數放后。然后比較第二個數以及第三個數,嫁給你小數放前,大數放后,云云持續,直至比較最初兩個數,嫁給你小數放前,大數放后。至此第一趟收場,將最大的數放在最初。云云上來,反復以上進程,直至終極實現。

選擇排序
第一次從下標為0的最先,下標為0的這個數與前面的n-1個進行比較,找出最小或者者最大的放鄙人標為0的這個地位,第二次從下標為1的最先比較,查問剩下的最大或者者最小值,放鄙人標為1的地位,以此類推,直至排序實現。

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。