大小排序法,個人理解(沒有做優化)

隨便定義一個整型數組

1 int[] arr = {3,6,2,3,7,3,1,5,3,9,0,5};

這個數組的長度為12,索引為0~11

嘗試使用以下代碼將最大值替換到最後一位

for(int i = 0;i < arr.length-1; i++) {
            if(arr[i] > arr[i+1]){
                int temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        }

運行結果為633732539150為確保無誤,將此代碼循環執行几次,發現確實有效

數了一下替換為有序數組的次數,正好與數組的長度相同,即每個數組的元素都會與數組中的其他元素相比較並考慮是否替換

以下代碼為從大到小排序,反之比較大小則為從小到大排序

1 for(int j = 0;j < arr.length;j++) {
2             for(int i = 0;i < arr.length-1; i++) {
3                 if(arr[i] < arr[i+1]){
4                     int temp = arr[i];
5                     arr[i] = arr[i+1];
6                     arr[i+1] = temp;
7                 }
8             }
9         }

最後做一下總結,此方法可行但是數組每次循環時,都會與其他元素進行比較(包括最大或最小的元素即已經排序好的元素),這個地方可以優化

因上努力,果上随缘
原文地址:https://www.cnblogs.com/zemengcheng/p/13060171.html