/************************************************************************************/
/* Bucket_Sort.h 桶式排序算法 */
/* 问题:对一个有n个整型元素a[0],a[1],…,a[n-1]的数组排序,其中0 <= a[i] <= m,任意i */
/* 程序:运行时间为O(m+n),辅助空间为O(m) */
/* 当 n=m 时特殊处理,运行时间为O(N), 辅助空间为O(1) */
/************************************************************************************/
#include <vector>
/*m != n */
void Bucket_Sort_m(int *a, int n, int m)
{
std::vector<int> temp(m,0);
int i;
for(i = 0; i != n; ++i) //遍历a[]
++temp[a[i]-1]; //如果有对应于下标的值,标记为1,否则为0
i = 0;
for(int j = 1; j <= m; ++j) //遍历temp向量
if(temp[j-1]) a[i++] = j;
temp.clear();
}
/* m == n */
/* 最后的结果是a[i-1] = i */
void Bucket_Sort(int *a,int n)
{
for(int i = 1; i <= n; ++i)
{
while(a[i-1] != i)
{
int temp = a[a[i-1]-1];
a[a[i-1]-1] = a[i-1];
a[i-1] = temp;
}
/* 伪代码:如果假设可以通过a[i]访问数组的第i个元素,而不是第i-1个 */
/*while(a[i] != i)
{
int temp = a[a[i]];
a[a[i]] = a[i];
a[i] = temp;
}
*/
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有