計數排序-java
public class 計數排序 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int []A = {1,5,3,6,4,2,9,8,7,0,5,8,5,5};
int []B = new int[14];
COUNYING_SORT(A,B,9);
for(int i:B){
System.out.println(i);
}
}
public static void COUNYING_SORT(int []A,int []B,int k){//k爲A中最大元素
int []C = new int[k+1];
for(int i = 0; i<=k;i++){
C[i] = 0;
}
for(int j = 0;j < A.length;j++){//統計A中某個數值的個數
C[A[j]] = C[A[j]] + 1;
}
for(int i = 1;i<=k;i++){//統計當前元素之前所有元素個數
C[i] = C[i] + C[i-1];
}
for(int j = A.length-1;j>=0;j--){
B[C[A[j]]-1] = A[j];
C[A[j]] = C[A[j]] - 1;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int []A = {1,5,3,6,4,2,9,8,7,0,5,8,5,5};
int []B = new int[14];
COUNYING_SORT(A,B,9);
for(int i:B){
System.out.println(i);
}
}
public static void COUNYING_SORT(int []A,int []B,int k){//k爲A中最大元素
int []C = new int[k+1];
for(int i = 0; i<=k;i++){
C[i] = 0;
}
for(int j = 0;j < A.length;j++){//統計A中某個數值的個數
C[A[j]] = C[A[j]] + 1;
}
for(int i = 1;i<=k;i++){//統計當前元素之前所有元素個數
C[i] = C[i] + C[i-1];
}
for(int j = A.length-1;j>=0;j--){
B[C[A[j]]-1] = A[j];
C[A[j]] = C[A[j]] - 1;
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.