桶排序算法

news2024/11/23 9:23:46

题目

代码1:

#include <stdio.h>
int main()
{
    int sz=0;
    scanf("%d",&sz);
    int arr[sz];
    //输入
    int i=0;
    for (i=0;i<sz;i++)
    {
        scanf("%d",&arr[i]);
    }
    //删除多余相同元素
    int j=0;
    int k=0;
    for (i=0;i<sz;i++)
    {
        if (i==0)
        {
            arr[j++]=arr[i];
        }
        else
        {
            int flag=0;
            for (k=0;k<=(j-1);k++)
            {
                if (arr[i]==arr[k])
                {
                    flag++;
                    break;
                }
            }
            if (flag==0)
            {
                arr[j++]=arr[i];
            }
        }
    }
    //冒泡排序
    for (i=0;i<(j-1);i++)
    {
        for (k=0;k<=(j-(i+2));k++)
        {
            if (arr[k]>arr[k+1])
            {
                int tmp=arr[k];
                arr[k]=arr[k+1];
                arr[k+1]=tmp;
            }
        }
    }
    //输出
    for (i=0;i<=(j-1);i++)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

经验总结:

1. 首先在这边当我在删除多余的相同元素时,我以之前的删除数组指定元素的例子受到启发,设定了多个变量。其中一个循环变量来遍历最初数组本身每一个数,然后再根据我的条件进行筛选,然后再重新放进我这个数组当中。有点类似于“覆盖”的意味。
2. 然后接下来当数组相同多余元素全都解决消灭完之后,然后再用老生长谈的冒泡排序。
3. 但是这种方法看起来比较冗余,并不是最好的选择。

代码2:(桶排序算法)

#include <stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    int arr[1001]={0};
    int max=0;
    int tmp=0;
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&tmp);
        arr[tmp]=1;
        if(tmp>max)
        {
            max=tmp;
        }
    }
    for (i=0;i<=max;i++)
    {
        if (arr[i]==1)
        {
            printf("%d ",i);
        }
    }
    return 0;
}

经验总结:

1. 现在进行排序的话,以我目前的知识储备,不仅仅只有冒泡排序了,又有了新一种排序算法:桶排序算法。
2. 桶排序算法也就是说比如现在你有一堆数字需要对其进行排序,

步骤:
1. 首先最好得找到这些数字当中的最大值
2. 然后创建一个初始化0的数组(这个数组的最大下标值就是刚才上面的一堆数字中最大值
3. 然后把这些数字与数组的下标对应起来,并且在数组元素当中放入1。举个简单的例子:比如说一堆数字里面有数字8,那么就在arr[8]里面放入1,然后比如说这一堆数字里面没有9,那么arr[9]里面还是0。
4. 弄完之后就是遍历数组了,一个一个元素遍历下去,如果值为1,那么就打印下标
(By the way,如果要选择升序或者降序,时候就需要对应的调整遍历数组的顺序)

总而言之:
桶排序的精髓在于:
1. 把待排序的数字与数组的下标联系起来。
2. 联系起来之后在对应下标的数组元素里面放入1作为标记。

3. 打印的时候打印的是数组的下标。

来个例子吧:

int main()
{
	int arr[9] = { 44,65,43,26,75,89,33,50,81 };
	printf("排序前:");
	int i = 0;
	for (i=0;i<9;i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	int max = arr[0];
	for (i = 1; i <= 8; i++)
	{
		if (max < arr[i])
		{
			max = arr[i];
		}
	}
	printf("数组最大元素为%d\n",max);
	int arr1[90] = { 0 };
	for (i = 0; i < 9; i++)
	{
		arr1[arr[i]] = 1;
	}
	printf("桶排序后的结果:");
	for (i = 0; i < 89; i++)
	{
		if (arr1[i] == 1)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

 结果:
 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis批量保存(Oracle)MyBatis批量插入时,组装SQL过长会有问题,一定要根据批量插入数据量进行切割,再批次提交保存!!!

MyBatis批量保存&#xff08;Oracle&#xff09; oracle 批量插入与mysql 的批量插入的方式不同 insert into tablename()values(),(),(); ---这个是mysql 的批量插入形式 insert all into tablename() values() into tablename() values() -------这个是Oracle批量插入形式 你…

大数据测试 - 数仓测试

前言 对于数据仓库的测试来说底层的系统会有很多有自建的集群使用 spark 或者 flink 测试&#xff0c;也有很多直接使用云厂商的产品比如 datworks 等等&#xff0c;再这里我想分享下抛开环境&#xff0c;只对数据仓库测试的一些小心得。 数仓分层设计 标准数仓分为 ODS,DWD…

java计算机毕业设计基于安卓Android的微整形美容app

项目介绍 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设…

前缀和问题

前缀和 一维二维 ac795. 前缀和【一维】 输入一个长度为 nn 的整数序列。 接下来再输入 mm 个询问&#xff0c;每个询问输入一对 l,rl,r。 对于每个询问&#xff0c;输出原序列中从第 ll 个数到第 rr 个数的和。 输入格式 第一行包含两个整数 nn 和 mm。 第二行包含 nn…

基于android的资源文件管理器

软 件 学 院 毕业实训报告 课题名称&#xff1a; android资源管理器 专 业&#xff1a; 软件设计&#xff08;游戏开发方向&#xff09; 班 级&#xff1a; 学 号&#xff1a; 学生姓名&#xff1a; 指导教师&#xff1a; 年 月 日 摘 要 相信大家对Android的发展历史…

Nacos-配置中心,特性,启动,集成mysql,快速入门

Nacos - 配置管理 目录Nacos - 配置管理1. 什么是配置中心1.1 什么是配置1.2 什么是配置中心2 Nacos****简介2.1 主流配置中心对比2.2 Nacos****简介2.3 Nacos****特性3 Nacos 快速入3.1 安装 Nacos Server3.1.1 预备环境准备3.1.2 下载源码或者安装包3.1.3 启动服务器3.1.4 OP…

HTML班级网页设计 基于HTML+CSS+JS制作我们的班级网页(web前端学生网页设计作品)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

计算机毕业设计---java+springboot宠物商城系统

一、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot Maven mybatis Vue 等等组成&#xff0c;B/…

光栅尺差分计数/频率5MHz/磁栅尺编码器差分脉冲计数采集模块

产品特点&#xff1a; ● 光栅尺磁栅尺解码转换成标准Modbus RTU协议 ● 光栅尺5V差分信号直接输入&#xff0c;4倍频计数 ● 模块可以输出5V的电源给光栅尺供电 ● 高速光栅尺磁栅尺计数&#xff0c;频率可达5MHz ● 支持4个光栅尺同时计数&#xff0c;可识别正反转 ● …

Oracle函数

目录 一、数值函数 1.ABS(value)&#xff1a;绝对值 2.CEIL(value)&#xff1a;向上取整 3.FLOOR(value)&#xff1a;向下取整 4.ROUND(value)&#xff1a;四舍五入 5.MOD(value(被除数),divisor(除数))&#xff1a;求模 6.SIGN(value)&#xff1a;判断正(0)负(-1)和零(…

隐私计算学习笔记

目录 安全保护技术和应用总结 基础隐私计算技术在联邦学习中的应用 参考书籍 图片来源&#xff1a; https://www.basebit.ai/en/Statics/Images/en/dbys.png 隐私计算技术的产生是互联网、大数据以及区块链等技术发展到一定阶段的必然成果&#xff0c;以下为大家分享读书笔…

01-32-spring5-bean-ioc-aop

01-spring5&#xff1a; spring 1、spring概念 1、什么是spring及优点 Spring框架使Java EE应用程序的开发更加简捷&#xff0c;通过使用POJO为基础的编程模型促进良好的编程风格。 轻量级&#xff1a;Spring在大小和透明性方面绝对属于轻量级的&#xff0c;基础版本的Spr…

【推荐系统学习笔记】-- 2、特征工程

1、可利用的特征 1.1 用户行为特征 显性反馈行为&#xff1a;点赞、评分、评价等隐形反馈行为&#xff1a;点击、浏览、播放、加入购物车等 1.2 用户关系数据 显性&#xff1a;关注、好友关系隐形&#xff1a;点赞、共同观影使用Graph Embedding生成用户和物品的Embedding …

[附源码]Python计算机毕业设计SSM基于web的托育园管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

蓝牙遥控小车基础篇

开发环境&#xff1a; STM32F103R8T6最小系统板&#xff08;IO顺序引出&#xff09; 3D建模蓝牙遥控小车STL 蓝牙遥控小车纯HAL库代码 TP-Bluetooth-Car.apk蓝牙apk 原理&#xff1a;&#xff08;写代码前必须要知道模块的参数&#xff09; 蓝牙模块HC-05使用指南 HC-05蓝…

C++入门——函数重载

C入门——函数重载与缺省 先说说什么是缺省 大家生活中都知道什么关于缺省这个词的例子吗&#xff1f; 肯定是一头雾水&#xff0c;没事我举一个例子&#xff0c;给大家解释一下。 假如小菜是一个舔狗&#xff0c;他天天跟女神买早餐、嘘寒问暖。可是女神还是天天不为所动&am…

基于LabVIEW单片机的抢答器的设计

实训题目&#xff1a;基于LabVIEW单片机的抢答器的设计 1 系统设计 1.1 设计要求 1.1.1 设计任务 设计一个基于LABVIEW的6人抢答器&#xff0c;实现抢答器的基本功能。 1.1.2 性能指标要求 需要自己设计电路并焊接电路板。基本要求&#xff1a;有一个主持人控制开关和…

【华为机试真题详解】投篮大赛【2022 Q4 | 100分】

文章目录 前言题目描述示例 1题目解析参考代码前言 《华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优)…

WeOps上新啦 | WeOpsV3.13网络设备监控全新改造,支持拓展不同品牌型号

本次WeOpsV3.13版本更新主题总结为&#xff1a; 优化网络设备监控&#xff0c;支持拓展不同品牌和型号的设备监控新增3D立体应用全景大屏&#xff0c;全方位展示应用和监控情况新增事件订阅&#xff0c;支持资产的到期提醒监控告警/IT服务台等模块持续更新&#xff0c;简化操作…