数据结构与算法学习(day1)——简化版桶排序

news/2025/2/21 7:46:59/

文章目录

    • 前言
    • 本章目标
    • 简化版桶排序
      • 题目一
      • 题目二

前言

(1)我是一个大三的学生(准确来说应该是准大三,因为明天才报名哈哈哈)。

(2)最近就想每天闲着没事也刷些C语言习题来锻炼下编程水平,也一直在思考企业对应届大学生能力的要求,所以经常会想到关于面试的事情。由于我也没实习过,所以我对面试没有一个具象化的概念。

(3)好在我会动用网络去搜集信息,我打开了CSDN查了下“C语言编程每日一练”,就发现了“C语言面试题每日一练‘’的文章,其中我发现了,嵌入式面试对数据结构与算法的要求也不低,所以我要特地花时间去提升下我的数据结构与算法的能力了,不能啥也不知道哇!

本章目标

  1. 掌握简化版桶排序的使用场景和代码架构
  2. 会用简化版桶排序解决一些问题

简化版桶排序

简化版桶排序的思路就是,如果要对数据范围是0~10的整数就行排序,那么我们需要11个桶,即一个大小为11的数组,每个元素来表示0到10之间每个数出现的次数,因为数组的元素由a[0]到a[10]来排列,a[0]里面装的是数字0的个数,a[1]里面装的是数字1的个数,以此类推;最后按a[0]至a[10]的顺序或者是a[10]到a[0]的顺序来输出数组的元素,就可以实现对原数据进行从小到大或者是从大到小的顺序排列。

题目一

题目:让计算机随机读入5个数,数的大小范围是0~10;然后将这5个数从大到小输出。

思路:借助一个一维数组。

  1. 从小到大输出
#include <stdio.h>
int main()
{int a[10], i, j, t;for (i = 0; i <= 10; i++)a[i] = 0;     //初始化一维数组为0for (i = 1; i <= 5; i++)   //循环读入5个数{scanf("%d",&t);        //把每一个数读入到变量t中a[t]++;                //进行计数}for (i = 0; i <= 10; i++)for (j = 1; j <= a[i]; j++)printf("%d ",i);getchar(); getchar();//这里的getchar();用来暂停程序,以便查看程序输出内容//也可以用system("pause");等来代替return 0;
}

在这里插入图片描述

  1. 从大到小排序
#include <stdio.h>
int main()
{int a[10], i, j, t;for (i = 0; i <= 10; i++)a[i] = 0;     //初始化一维数组为0for (i = 1; i <= 5; i++)   //循环读入5个数{scanf("%d",&t);        //把每一个数读入到变量t中a[t]++;                //进行计数}//i就是输入的数值,a[i]就是i的个数for (i = 10; i >= 0; i--)  //改这里就可以决定是从大到小排序还是从小到大排序for (j = 1; j <= a[i]; j++)printf("%d ",i);getchar(); getchar();//这里的getchar();用来暂停程序,以便查看程序输出内容//也可以用system("pause");等来代替return 0;
}

在这里插入图片描述

题目二

题目:输入n个0~1000之间的整数,将它们从大到小排序。

思路:对数据范围在0到1000的整数排序,我们需要1001个桶,来表示0~1000之间每一个数出现的次数。

从大到小输出。

#include <stdio.h>
int main()
{int book[1001], i, j, t, n;for (i = 0; i <= 1000; i++)book[i] = 0;scanf("%d",&n);   //输入一个数n,表示接下来有n个数for (i = 1; i <= n; i++){scanf("%d",&t);book[t]++;}for (i = 1000; i >= 0; i--)for (j = 1; j <= book[i]; j++)printf("%d ",i);getchar(); getchar();return 0;
}

在这里插入图片描述


http://www.ppmy.cn/news/1094724.html

相关文章

day42:C++ day2,C++对C的补充(引用、动态内存分配与回收、函数扩充以及结构体扩充)

面试题小结&#xff1a; 1、指针与引用的区别&#xff1f; &#xff08;1&#xff09;指针指向的是变量的地址&#xff0c;而引用是指向变量本身&#xff1b; &#xff08;2&#xff09;指针可以有多级指针&#xff0c;而引用只有一级引用&#xff1b; &#xff08;3&#…

SpringBoot 整合MyBatisPlus

简介 MyBatis Plus&#xff08;也称为MyBatis&#xff09;是MyBatis框架的增强版本&#xff0c;MyBatis是一种流行的轻量级Java持久化框架。MyBatis Plus提供了额外的功能&#xff0c;并简化了对MyBatis的使用&#xff0c;使得在Java应用程序中使用数据库更加便捷。 官方文档&a…

2023高教社杯数学建模E题思路分析 - 黄河水沙监测数据分析

# 1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响&#xff0c; 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…

走进中国水果罐头领军品牌真心罐头—快消食品企业的全链路数字化

近日&#xff0c;【数字中国-高效增长】名城优企游学系列之走进真心罐头活动成功举办&#xff01; 真心罐头食品有限公司&#xff08;以下简称为“真心罐头”&#xff09;初创于1990年&#xff0c;位于素有“北方明珠”、“黄桃之乡”美誉的海滨城市——辽宁省大连市&#xff0…

SRT参数说明

1.超时选项 connect_timeout 连接超时时间&#xff0c;单位毫秒&#xff0c;默认值为3秒。 当RTT > 1500毫秒(2次握手交换)时&#xff0c;SRT无法连接。此选项适用于caller和rendezvous模式。 listen_timeout 监听超时时间&#xff0c;单位毫秒 timeout 为读、写和连接操作…

Unity之创建第一个2D游戏项目

一 Unity环境配置 1.1 Untity资源官网下载&#xff1a;https://unity.cn/releases 1.2 Unity Hub集成环境&#xff0c;包含工具和项目的管理 1.3 Unity Editor编辑器 1.4 Visual Studio 2022脚本编辑器 1.5 AndroidSKD&#xff0c;JDK&#xff0c;NDK工具&#xff0c;用于and…

宠物行业如何进行软文营销

如今&#xff0c;宠物已经成为了人们生活中不可或缺的一部分&#xff0c;大众对于萌宠的喜爱与日俱增&#xff0c;随着“萌宠经济”升温&#xff0c;越来越多的商机开始出现&#xff0c;伴随着宠物市场竞争的日益激烈&#xff0c;宠物行业的营销光靠硬广告很难吸引受众&#xf…

[刷题记录]牛客面试笔刷TOP101

牛客笔试算法必刷TOP101系列,每日更新中~ 1.合并有序链表2023.9.3 合并两个排序的链表_牛客题霸_牛客网 (nowcoder.com) 题意大致为: 将两个链表中的元素按照从小到大的顺序合并成为一个链表. 所给予的条件: 给出的所要合并的链表都是从小到大顺序排列的. 思路: 创建一…