函数c语言桶排算法,C语言基本排序算法之桶式排序实例
本文实例讲述了C语言基本排序算法之桶式排序。分享给大家供大家参考,具体如下:
桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法。
可以对 n==m, n != m分别处理。写代码时需要注意的的是a[i]是访问第i-1个元素,而非第i个。
/************************************************************************************/
/* 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
/*m != n */
void Bucket_Sort_m(int *a, int n, int m)
{
std::vector 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;
}
*/
}
}
希望本文所述对大家C语言程序设计有所帮助。
函数c语言桶排算法,C语言基本排序算法之桶式排序实例相关推荐
- 排座系统c语言,2008noip排座位C语言详解.doc
2008noip排座位C语言详解 2008noip排座位C语言详解 2.排座椅 (seat.pas/c/cpp)D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是 ...
- C语言比较法排大小,c语言 比较法排序区别
匿名用户 1级 2009-10-25 回答 下面是C语言里面常用的三种比较排序方法: 一.冒泡法(起泡法) 算法要求:用起泡法对10个整数按升序排序. 算法分析:如果有n个数,则要进行n-1趟比较.在 ...
- c语言字母排直角三角形,C语言程序设计,输出形状为直角三角形的九九乘法表
C语言程序设计,输出形状为直角三角形的九九乘法表 答案:7 信息版本:手机版 解决时间 2019-10-07 02:42 已解决 2019-10-06 07:05 C语言程序设计,输出形状为直角三角 ...
- 九大排序算法-C语言实现及详解
概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...
- c语言排序算法——直接上代码
排序目录 (一)插入排序 (1)直接插入排序 (2)希尔排序 (二)交换排序 (1)冒泡排序 (2)快速排序 (三)选择排序 (1)简单选择排序 (2)堆排序 (四)归并排序 (五)基数排序 (六)归 ...
- 经典排序算法(9)——桶排序算法详解
桶排序(Bucket sort)或所谓的箱排序,并不是比较排序,它不受到 O(nlogn) 下限的影响. 一.算法基本思想 (1)基本思想 桶排序工作的原理是将数组分到有限数量的桶子里,每个桶子再个别 ...
- 九大排序算法,你会几个?
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大,则 ...
- 这些排序算法的使用时机,你都知道吗?
转载自 这些排序算法的使用时机,你都知道吗? 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存 ...
- 八大排序算法:插入(2:插入、希尔)、选择(2:选择、堆)、交换(2:冒泡、快速)、归并、基数
八大排序算法 发表于2012/7/23 16:45:18 662397人阅读 分类: c/c++ 数据结构与算法 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排 ...
最新文章
- 自定义present和dismiss的转场动画
- 让我们带着感恩的心生活
- 数学知识复习:二阶导复合函数的链式法则
- dotnet Core学习之旅(二):安装IDE
- SAP云平台CloudFoundry中的用户自定义变量
- java如何记录查看记录_Java如何检查消息是否可记录?
- python dll注入 网络_python – 检测反射型DLL注入
- 程序员常见保健方法【转贴】
- Ext学习笔记02 - 构造方法,类继承,类实例方法重写
- 单向链表相关——链表中环的问题
- 二叉树进阶之寻找一棵二叉树中的最大二叉搜索子树
- Linux安装MATLAB Compiler Runtime操作
- 《模拟电子技术基础》课程笔记(七)——放大电路
- 网易云 NeteaseCloudMusicApi 码云下载
- Python处理Excel数据的方法
- 电影整站程序 - webplayer9 p2p视频点播 - 电影整站系统 全部ASP源代码
- 山东法律学校97级二班计算机班,关于表彰全国三好学生、全国优秀学生干部和全国先进班集体及其标兵的决定...
- Alien Skin Exposure新版X8功能介绍
- 夜光:Java语言基础学习笔记(三)在校资源
- SECS/GEM通信协议学习之报文
热门文章
- 【英语学习】【WOTD】comminute 释义/词源/示例
- Intel Haswell/Broadwell架构/微架构/流水线 (3)-流水线乱序引擎
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (9) - 流水线前端/微指令队列循环流侦测器LSD
- 简述php语言的特点是_PHP语言有哪些优势和特点(一)
- jedis-2.4.1 中的JedisPoolConfig没MaxActive属性
- 为什么C++编译器不能支持对模板的分离式编译
- C++开源矩阵计算工具——Eigen的简单用法(一)
- 《程序员面试宝典》精华 编程语言部分
- GDC 2012]Epic Games谈在智能手机上制作和台式游戏机同等级的图形游戏的经验
- GoldenGate 之 Bounded Recovery说明