计数排序算法

来源:互联网 发布:新浪微博seo 编辑:程序博客网 时间:2024/06/11 15:59
/*
 * T(n)=O(n)
 * 不是基于比较的排序算法
 * 思想基于桶排序(类似于ASCII码排序)
 * 1、找出数组内的最大最小值
 * 2、声明最大值长度的数组
 * 3、遍历原来的数组,将每个元素对应声明的辅助数组的下标做出标记(即累加)
 * 
 */


public class 计数排序 {
public int[] countingSort(int []A,int n){
int max=A[0];
int min=A[0];
for(int i=0;i<n;i++){
max=Math.max(max, A[i]);
min=Math.min(min, A[i]);
}

int countIndex[]=new int [max-min+1];
for(int i=0;i<A.length;i++){
countIndex[A[i]-min]++;
}
int index=0;
for(int i=0;i<max-min+1;i++){
for(int j=0;j<countIndex[i];j++){
A[index++]=i+min;
}
}

return A;
}



}
原创粉丝点击