本文实例讲述了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语言基本排序算法之桶式排序实例相关推荐

  1. 排座系统c语言,2008noip排座位C语言详解.doc

    2008noip排座位C语言详解 2008noip排座位C语言详解 2.排座椅 (seat.pas/c/cpp)D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是 ...

  2. C语言比较法排大小,c语言 比较法排序区别

    匿名用户 1级 2009-10-25 回答 下面是C语言里面常用的三种比较排序方法: 一.冒泡法(起泡法) 算法要求:用起泡法对10个整数按升序排序. 算法分析:如果有n个数,则要进行n-1趟比较.在 ...

  3. c语言字母排直角三角形,C语言程序设计,输出形状为直角三角形的九九乘法表

    C语言程序设计,输出形状为直角三角形的九九乘法表 答案:7  信息版本:手机版 解决时间 2019-10-07 02:42 已解决 2019-10-06 07:05 C语言程序设计,输出形状为直角三角 ...

  4. 九大排序算法-C语言实现及详解

    概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...

  5. c语言排序算法——直接上代码

    排序目录 (一)插入排序 (1)直接插入排序 (2)希尔排序 (二)交换排序 (1)冒泡排序 (2)快速排序 (三)选择排序 (1)简单选择排序 (2)堆排序 (四)归并排序 (五)基数排序 (六)归 ...

  6. 经典排序算法(9)——桶排序算法详解

    桶排序(Bucket sort)或所谓的箱排序,并不是比较排序,它不受到 O(nlogn) 下限的影响. 一.算法基本思想 (1)基本思想 桶排序工作的原理是将数组分到有限数量的桶子里,每个桶子再个别 ...

  7. 九大排序算法,你会几个?

    概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大,则 ...

  8. 这些排序算法的使用时机,你都知道吗?

    转载自   这些排序算法的使用时机,你都知道吗? 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存 ...

  9. 八大排序算法:插入(2:插入、希尔)、选择(2:选择、堆)、交换(2:冒泡、快速)、归并、基数

    八大排序算法 发表于2012/7/23 16:45:18  662397人阅读 分类: c/c++ 数据结构与算法 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排 ...

最新文章

  1. 自定义present和dismiss的转场动画
  2. 让我们带着感恩的心生活
  3. 数学知识复习:二阶导复合函数的链式法则
  4. dotnet Core学习之旅(二):安装IDE
  5. SAP云平台CloudFoundry中的用户自定义变量
  6. java如何记录查看记录_Java如何检查消息是否可记录?
  7. python dll注入 网络_python – 检测反射型DLL注入
  8. 程序员常见保健方法【转贴】
  9. Ext学习笔记02 - 构造方法,类继承,类实例方法重写
  10. 单向链表相关——链表中环的问题
  11. 二叉树进阶之寻找一棵二叉树中的最大二叉搜索子树
  12. Linux安装MATLAB Compiler Runtime操作
  13. 《模拟电子技术基础》课程笔记(七)——放大电路
  14. 网易云 NeteaseCloudMusicApi 码云下载
  15. Python处理Excel数据的方法
  16. 电影整站程序 - webplayer9 p2p视频点播 - 电影整站系统 全部ASP源代码
  17. 山东法律学校97级二班计算机班,关于表彰全国三好学生、全国优秀学生干部和全国先进班集体及其标兵的决定...
  18. Alien Skin Exposure新版X8功能介绍
  19. 夜光:Java语言基础学习笔记(三)在校资源
  20. SECS/GEM通信协议学习之报文

热门文章

  1. 【英语学习】【WOTD】comminute 释义/词源/示例
  2. Intel Haswell/Broadwell架构/微架构/流水线 (3)-流水线乱序引擎
  3. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (9) - 流水线前端/微指令队列循环流侦测器LSD
  4. 简述php语言的特点是_PHP语言有哪些优势和特点(一)
  5. jedis-2.4.1 中的JedisPoolConfig没MaxActive属性
  6. 为什么C++编译器不能支持对模板的分离式编译
  7. C++开源矩阵计算工具——Eigen的简单用法(一)
  8. 《程序员面试宝典》精华 编程语言部分
  9. GDC 2012]Epic Games谈在智能手机上制作和台式游戏机同等级的图形游戏的经验
  10. GoldenGate 之 Bounded Recovery说明