|
CoutingSort
#include <stdio.h>#include <stdlib.h>void CountingSort(int A[], int B[], int k,int n){int * C;C=(int *)calloc(k,sizeof(int));for(int i=0;i<n; i++){C[A[i]]++;}for(i=1; i<k; i++){C[i]+=C[i-1];}for(i=n-1; i>=0; --i){B[C[A[i]]-1]=A[i];C[A[i]]--;}free(C);}int main(){int A[]={1,3,3,2,9,6,7,8,5,6,4,3,7};int k=10;int B[13]; CountingSort(A,B,k,13);printf("排序后的数组\n");for(int i=0;i<13;i++){printf("%d\t",B[i]);}}
注意:
1.数组初始化
int * p=(int *) calloc(k,size(int)); 会对内存空间初始化为0、
int * p=(int *) malloc(k*size(int));不会对内存空间初始化。
2.注意数组下标 |
|