计数排序
2012-10-12 10:04
197 查看
/************************************
REVISION LOG ENTRY
Revision By: ...
Revised on 2012-10-12 9:41:44
Comments: ...
************************************/
#pragma once
#include <iostream>
using namespace std;
void CountingSort(int A[],
int Length,
int Max//大于数组中最大的数)
{
int i;
int *Count=new int[Max];//用于统计的数组
int *Sort=new int[Length];//用于存储排序的数组
memset(Count,0,sizeof(int)*Max);
memset(Sort,0,sizeof(int)*Length);
//统计每个数出现的次数
for(i=0;i<Length;i++)
{
Count[A[i]]+=1;
}
for(i=1;i<Max;i++)
{
Count[i]+=Count[i-1];
}
for(i=Length-1;i>=0;i--)
{
int val=A[i];
Sort[Count[val]-1]=val;
Count[val]-=1;
}
memcpy(A,Sort,(sizeof(int))*Length);
delete[] Sort;
delete[] Count;
}
REVISION LOG ENTRY
Revision By: ...
Revised on 2012-10-12 9:41:44
Comments: ...
************************************/
#pragma once
#include <iostream>
using namespace std;
void CountingSort(int A[],
int Length,
int Max//大于数组中最大的数)
{
int i;
int *Count=new int[Max];//用于统计的数组
int *Sort=new int[Length];//用于存储排序的数组
memset(Count,0,sizeof(int)*Max);
memset(Sort,0,sizeof(int)*Length);
//统计每个数出现的次数
for(i=0;i<Length;i++)
{
Count[A[i]]+=1;
}
for(i=1;i<Max;i++)
{
Count[i]+=Count[i-1];
}
for(i=Length-1;i>=0;i--)
{
int val=A[i];
Sort[Count[val]-1]=val;
Count[val]-=1;
}
memcpy(A,Sort,(sizeof(int))*Length);
delete[] Sort;
delete[] Count;
}