演算法-java代碼實現計數排序

來源:互聯網
上載者:User

標籤:round   計數排序   lines   toggle   outline   idt   auto   question   數組元素排序   

 

計數排序  第10節 計數排序練習題 

對於一個int數組,請編寫一個計數排序演算法,對數組元素排序。

給定一個int數組A及數組的大小n,請返回排序後的數組。

測試範例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
Java (javac 1.7)代碼自動補全     1
import java.util.*;
2
3
public class CountingSort {
4
    public int[] countingSort(int[] A, int n) {
5
        countingSort(A);
6
        return A;
7
    }
8
9
    public void countingSort(int[] arr) {
10
        int[] tempArr = new int[arr.length];// 臨時數組
11
        int[] timesArr;// 統計每個元素出現的次數,放入到對應的桶中
12
        int range;// 統計這一組的範圍,得出需要多少個桶
13
        int max = arr[0];
14
        int min = arr[0];
15
        for (int a : arr) {
16
            if (a > max)
17
                max = a;
18
            if (a < min)
19
                min = a;
20
        }
21
        range = max - min + 1;// 得出極值差,為了減小臨時數組(統計各元素出現的次數)的長度
22
        timesArr = new int[range];
23
24
        for (int i = 0; i < arr.length; i++) {
25
            timesArr[arr[i] - min]++;
26
        }
27
        for (int i = 1; i < timesArr.length; i++) {// 得到所有元素的大小上的總體順序
28
            timesArr[i] += timesArr[i - 1];
29
        }
30
        for (int i = 0; i < arr.length; i++) {// 將arr中元素的位置順序對應到臨時數組中
31
            int position = timesArr[arr[i] - min];// 得到arr[i]這個元素在整體上的位置
32
            tempArr[--position] = arr[i];// 根據上面的位置,將該元素放入到臨時數組中
33
            timesArr[arr[i] - min]--;
34
        }
35
        for (int i = 0; i < arr.length; i++) {
36
            arr[i] = tempArr[i];
37
        }
38
    }
39
}
  您的代碼已儲存
答案正確:恭喜!您提交的程式通過了所有的測試案例 

演算法-java代碼實現計數排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.