广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C/C++语言八大排序算法之桶排序全过程示例详解
  • 913
分享到

C/C++语言八大排序算法之桶排序全过程示例详解

2024-04-02 19:04:59 913人浏览 泡泡鱼
摘要

基本思路是将所有数的个位十位百位一直到最大数的最高位一步步装桶,先个位装桶然后出桶,直到最高位入桶出桶完毕。 首先我们要求出一个数组的最大数然后求出他的最大位数  //

基本思路是将所有数的个位十位百位一直到最大数的最高位一步步装桶,先个位装桶然后出桶,直到最高位入桶出桶完毕。

首先我们要求出一个数组的最大数然后求出他的最大位数 


//求最大位数的函数
int getmaxweisu(int* a,int len)//
{
	int max = a[0];
	for (int i = 0; i < len; i++)
	{
		if (max < a[i])
		{
			max = a[i];
		}
	}
	int count = 1;
	while (max/10)
	{
		count++;
		max /= 10;
	}
	return  count;
}

其次我们先按各位装桶然依次递推下


void buckle_sort(int* a, int len,int div)//div表示取位数的余数
{
	//要申请一个二维10*10的数组区保存数字
	int bucket[10][10];
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			bucket[i][j] = -1;
            //随便什么数字只要不要与排序数字有相同就可以
		}
	}
	int temp = 1;
	for (int i=1; i < div; i++)
	{
		temp = temp * 10;//求出第几位余数
	}
	for (int i = 0; i < len; i++)
	{		
		int k = (a[i]/temp) % 10;//求第几位的余数
		for (int j = 0; j < 10; j++)
		{
			if (bucket[k][j] == -1)
			{
				bucket[k][j] = a[i];
				break;
			}
		}
	}
	//出桶
	int k = 0;
	for (int i = 0; i < len; i++)
	{
		for (int j = 0; j < len; j++)
		{
			if (bucket[i][j] != -1)
			{
				a[k] = bucket[i][j];
				k++;//去遍历桶 让桶的所有数字都出来
				bucket[i][j] = -1;
			}
		}
	}
}

最后通过最大的数的位数来表示要进行几次入桶和出桶


void Bucket_Sort(int* a, int len)
{
	int n=getmaxweisu(a, len);
	for (int m = 1; m <= n; m++)
	{
		buckle_sort(a, len,m);
	}
}

int a[10] = { 1,5,7,21,259,4,11,61,17,98 };代码演示全过程

 

 第一次出桶后a数组的顺序1 ,21,11 ,61, 4, 5, 7, 17 ,98, 259

 第二次入桶过程

 出桶后a数组为1,4,5,7,11,17,21,259,61,98

 说明:如果取余为没有那么他就是为0 的

 

 最后一次出桶后就排序好了

 a数组就为1,4,5,7,11,17,21,61,98,259

以上就是C/C++语言八大排序算法之桶排序过程示例详解的详细内容,更多关于C/c++语言排序算法的资料请关注编程网其它相关文章!

--结束END--

本文标题: C/C++语言八大排序算法之桶排序全过程示例详解

本文链接: https://www.lsjlt.com/news/157654.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C/C++语言八大排序算法之桶排序全过程示例详解
    基本思路是将所有数的个位十位百位一直到最大数的最高位一步步装桶,先个位装桶然后出桶,直到最高位入桶出桶完毕。 首先我们要求出一个数组的最大数然后求出他的最大位数  //...
    99+
    2022-11-12
  • C语言 八大排序算法的过程图解及实现代码
    目录前言一、插入排序时间复杂度空间复杂度代码实现(升序)二、希尔排序时间复杂度空间复杂度代码实现三、选择排序时间复杂度空间复杂度代码实现四、堆排序时间复杂度空间复杂度代码实现五、冒泡...
    99+
    2022-11-12
  • C语言实现冒泡排序算法的示例详解
    目录1. 问题描述2. 问题分析3. 算法设计动图演示4. 程序设计设计一设计二结论5. 流程框架6. 代码实现7. 问题拓展1. 问题描述 对N个整数(数据由键盘输入)进行升序排列...
    99+
    2022-11-13
  • C语言之快速排序案例详解
    快速排序:是对冒泡排序算法的一种改进。 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据...
    99+
    2022-11-12
  • C语言中冒泡排序算法详解
    目录一、算法描述二、算法分析三、完整代码总结一、算法描述 比较相邻两个元素,如果第一个比第二个大则交换两个值。遍历所有的元素,每一次都会将未排序序列中最大的元素放在后面。假设数组有 ...
    99+
    2022-11-12
  • TypeScript实现十大排序算法之归并排序示例详解
    目录一. 归并排序的定义二. 归并排序的流程三. 归并排序的图解四. 归并排序的代码五. 归并排序的时间复杂度六. 归并排序的总结一. 归并排序的定义 归并排序(merge sor...
    99+
    2023-02-23
    TypeScript算法归并排序 TypeScript算法
  • TypeScript十大排序算法之选择排序实现示例详解
    目录一. 选择排序的定义二. 选择排序的流程三. 选择排序的图解四. 选择排序的代码五. 选择排序的时间复杂度六. 选择排序的总结一. 选择排序的定义 选择排序(Selection...
    99+
    2023-02-23
    TypeScript 选择排序算法 TypeScript 算法
  • TypeScript实现十大排序算法之冒泡排序示例详解
    目录一. 冒泡排序的定义二. 冒泡排序的流程三. 冒泡排序的图解四. 冒泡排序的代码五. 冒泡排序的时间复杂度六. 冒泡排序的总结一. 冒泡排序的定义 冒泡排序是一种简单的排序方法...
    99+
    2023-02-23
    TypeScript冒泡排序算法 TypeScript 算法
  • C语言冒泡排序算法代码详解
    今天我们来用C语言实现一下冒泡排序 首先我们来了解一下什么叫做冒泡排序,冒泡顾名思义把质量轻的气体(如二氧化碳一样)浮到水面上(如可乐中的二氧化碳),因此冒泡排序的原理就是N个元素在...
    99+
    2022-11-13
  • C语言超详细讲解排序算法上篇
    目录1、直接插入排序2、希尔排序(缩小增量排序)3、直接选择排序4、堆排序进入正式内容之前,我们先了解下初阶常见的排序分类 :我们今天讲前四个! 1、直接插入排序 基本思...
    99+
    2022-11-13
  • C语言超详细讲解排序算法下篇
    目录1、冒泡排序2、快速排序 ( 三种方法 )3、归并排序4、排序算法复杂度及稳定性分析 上期学习完了前四个排序,这期我们来学习剩下的三个排序 1、冒泡排序 &n...
    99+
    2022-11-13
  • C语言实现交换排序算法(冒泡,快速排序)的示例代码
    目录前言一、冒泡排序1.基本思想2.优化3.扩展二、快速排序1.基本思想2.优化3.代码前言 查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技...
    99+
    2022-11-13
  • C语言实现经典排序算法的示例代码
    目录一、冒泡排序1.原理2.实现3.算法分析二、选择排序1.原理2.实现3.算法分析三、插入排序1.原理2.实现3.算法分析四、希尔排序1.原理2.实现3.算法分析总结一、冒泡排序 ...
    99+
    2022-11-13
    C语言排序算法 C语言排序
  • C语言qsort函数用冒泡排序实现过程详解
    目录前言1.冒泡排序的实现1.1冒泡排序的概念1.2具体代码的实现2.qsort函数3.qsort函数的实现前言 这篇文章就是指针进阶的收尾环节了,相信看过C语言进阶—&...
    99+
    2023-02-14
    C语言qsort函数 C语言冒泡排序实现qsort函数
  • C语言数据结构经典10大排序算法实例分析
    今天小编给大家分享一下C语言数据结构经典10大排序算法实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、冒泡排序//...
    99+
    2023-06-29
  • C语言详解数据结构与算法中枚举和模拟及排序
    目录枚举连号区间数递增三元组二分双指针前缀和模拟特别数的和错误票据排序快速排序归并排序枚举 连号区间数 来源:第四届蓝桥杯省赛C++B组,第四届蓝桥杯省赛JAVAB组 小明这些天一直...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作