计数排序的C++实现
来源:互联网 发布:mac html5开发工具 编辑:程序博客网 时间:2024/06/06 04:34
//-------------------------------------------------------------------------------------------函数申明
#pragma once
//A待排序数组、iLength数组长度,iMax数组的最大值
void CountingSort(int A[], int iLength, int iMax);
//-------------------------------------------------------------------------------------------函数申明
//-------------------------------------------------------------------------------------------函数实现
#include "CountingSort.h"
#include <iostream>
#include <string>
using namespace std;
void CountingSort(int A[], int iLength, int iMax)
{
//用于统计的数组和用于存储排序结果的数组
int* pCount = new int[iMax];
int* pB = new int[iLength];
memset(pCount, 0, sizeof(int) * iMax);
memset(pB, 0, sizeof(int) * iLength);
//某个数出现一次,则计数它的数组相应增加一。
for ( int i = 0; i < iLength; i++)
{
int iValue = A[i];
pCount[iValue] += 1;
}
//pCount[i]中包含了小于等于i的元素个数。
for ( int i = 1; i < iMax; i++)
{
pCount[i] += pCount[i - 1];
}
for (int i = iLength - 1; i >= 0; i--)
{
int iValue = A[i];//值
int iIndex = pCount[iValue];//该值在序列中排多少号。
pB[iIndex - 1] = A[i];
pCount[iValue] = pCount[iValue] - 1;
}
memcpy(A, pB, sizeof(int) * iLength);
delete[] pB;
delete[] pCount;
}
//-------------------------------------------------------------------------------------------函数实现
//-------------------------------------------------------------------------------------------测试程序
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include "CountingSort.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
srand(int(time(NULL)));
int A[20];
int iNow = 0;
for ( int i = 0; i < 20;i++ )
{
int iValue = ((int)rand())%1000;
A[i] = iValue;
cout << A[i] << ",";
}
cout << " After Sort :"<<endl;
CountingSort(A, 20, 1000);
for ( int i = 0; i < 20; i++)
{
cout << A[i] << ",";
}
return 0;
}
- 计数排序C实现
- 计数排序的C语言实现
- 计数排序的实现
- 计数排序的实现
- 计数排序c/c++实现
- 计数排序C语言实现
- 计数排序-C语言实现
- C数据结构---计数排序实现
- 计数排序的C++实现
- 计数排序的 java实现
- C++ 计数排序的实现
- 计数排序的简单实现
- 计数排序算法实现(C版)
- 计数排序算法(C语言实现)
- 算法导论C语言实现: 计数排序
- 计数排序及C语言实现
- 计数排序C++实现
- 算法导论计数排序实现(C++)
- 二叉查找树实现排序
- 动态PAT配置
- Linq中Group和Sum的应用
- SQLite使用手记
- Objective-C中委托和协议详解
- 计数排序的C++实现
- 静态NAT配置
- #if defined() 含义
- 装系统时出现蓝屏
- RIP协议配置
- js 操作select和option(转载)
- 新学期的总结
- logback的使用(1)
- OSPF协议配置