算法基础入门 - 1.排序

文章目录

    • 算法基础入门
      • 第一章:排序
        • 1.1 桶排序
        • 1.2 冒泡排序
        • 1.3 快速排序
        • 1.4 买书问题

算法基础入门

第一章:排序

1.1 桶排序

该算法好比桶,假设有11个桶,编号从0-11。每出现一个数,就往对应编号的桶中放入旗子,只需要数桶中旗子的个数即可。比如2号桶有1个旗子,表示2出现了一次,3号桶有0个旗子,表示3出现了零次,5号桶有2个旗子,表示5出现了两次。

a[0]为0, 表示‘0’没有出现过,不打印
a[1]为0, 表示‘0’没有出现过,不打印
a[2]为1, 表示‘2’出现过1次, 打印2
a[3]为0, 表示‘0’没有出现过,不打印
a[4]为0, 表示‘0’没有出现过,不打印
a[5]为1, 表示‘5’出现过1次, 打印1次
a[6]为2, 表示‘6’出现过2次, 打印2次
a[7]为1, 表示‘0’没有出现过,不打印
a[8]为0, 表示‘0’没有出现过,不打印
a[9]为0, 表示‘0’没有出现过,不打印
a[10]为0,表示‘0’没有出现过,不打印

请添加图片描述

#include <stdio.h>int main()
{int book[101],i,j,input,num;for(i = 0; i < 101; i++){book[i] = 0;}scanf("%d", &num);                    //表示要输入数字的个数 for(i = 1; i <= num; i++)           //输入n个数,进行桶排序 {scanf("%d", &input);            //读取数字 book[input]++;                    //进行计数 }for(i=100; i >= 0; i--)             //依次进行判断 {for(j = 1; j <= book[i]; j++)   //打印数字,打印的次数为数字出现的次数 {printf("%d ", i);}}printf("\n");                         //输出完后进行换行 return 0;
}
1.2 冒泡排序

基本思想:每次比较两个相邻的元素,若它们的顺序错误就将它们交换过来。
原理:每一趟只能确定将一个数归位
例: 10 6 4 7 2 5 将这6个数进行从大到小的排序。
第一趟:
首先比较第一位与第二位的大小,也就是10与6的比较,10比6大,所以无需交换两个数的位置。
继续比较第一位与第三位的大小,也就是10与4的比较,10比4大,所以无需交换两个数的位置。
继续比较第一位与第四位的大小,也就是10与7的比较,10比7大,所以无需交换两个数的位置。
继续比较第一位与第五位的大小,也就是10与2的比较,10比2大,所以无需交换两个数的位置。
继续比较第一位与第六位的大小,也就是10与5的比较,10比5大,所以无需交换两个数的位置。
第二趟:
首先比较第二位与第三位的大小,也就是6与4的比较,6比4大,所以无需交换两个数的位置。
继续比较第二位与第四位的大小,也就是6与7的比较,6比7小,所以需交换两个数的位置。此时 10 7 4 6 2 5。
继续比较第二位与第五位的大小,也就是7与2的比较,7比2大,所以无需交换两个数的位置。
继续比较第二位与第六位的大小,也就是7与5的比较,7比5大,所以无需交换两个数的位置。
第三趟:
首先比较第三位与第四位的大小,也就是4与6的比较,4比6,所以需交换两个数的位置。此时 10 7 6 4 2 5。
继续比较第三位与第五位的大小,也就是6与2的比较,6比2大,所以无需交换两个数的位置。
继续比较第三位与第六位的大小,也就是6与5的比较,6比5大,所以无需交换两个数的位置。
第四趟:
继续比较第四位与第五位的大小,也就是4与2的比较,4比2大,所以无需交换两个数的位置。
继续比较第四位与第六位的大小,也就是4与5的比较,4比5小,所以需交换两个数的位置。此时 10 7 6 5 2 4。
第五趟:
比较第五位与第六位的大小,也就是2与4的比较,2比4小,所以需交换两个数的位置。此时 10 7 6 5 2 2。
总结:若有n个数进行排序,只需将n-1个数归位,也就是n-1趟,每一趟都需从第一位开始进行相邻两个数的比较,比较完后向后挪一位继续比较下两个数,已经归位的数无需再进行比较。
时间复杂度O(N^2)

#include <stdio.h>struct Student                               //创建结构体,存放学生的姓名和成绩 
{char name[20];int score;
};int main()
{struct Student s1[100],temp

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

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

相关文章

自动化测试TCP和UDP的带宽

在一侧设备&#xff0c;执行iperf3 -s -i 1 另一侧设备执行以下脚本 测试长时间下以太网的tcp带宽和udp丢包率 测试某以太网转换盒的时候&#xff0c; 发现tcp带宽在刚开始的几分钟是800M左右&#xff0c;然后直线转为50M&#xff0c;并且长时间稳定 UDP的丢包率&#xff0…

Spring Boot整合ZXing实现二维码和条形码生成

1. 添加ZXing依赖到Spring Boot项目 场景描述: 在需要快速、高效地生成二维码或条形码的应用中&#xff0c;如电子票务、产品追踪、个人身份验证等&#xff0c;集成ZXing库至Spring Boot项目是至关重要的一步。 在项目的pom.xml文件中添加以下依赖以引入ZXing库&#xff1a; …

Appium APP测试学习

1、安装client编程库(客户端) (1)如果遇到以下问题可以使用全路径安装 (2)安装后导致selenium升级&#xff0c;导致某些方法失效&#xff1a;如find_element_by_id。解决方法&#xff1a;卸载两个安装包&#xff0c;后面重新安装 2、安装appium Server:&#xff08;服务端&…

【码银送书第二十一期】《大数据智能风控:模型、平台与业务实践》

人行印发的《金融科技&#xff08;FinTech&#xff09;发展规划&#xff08;2022一2025年&#xff09;》明确指出金融科技成为防范化解金融风险的利器&#xff0c;运用大数据、人工智能等技术建立金融风控模型&#xff0c;有效甄别高风险交易&#xff0c;智能感知异常交易&…

每日热榜资源

获取更多资源&#xff0c;请关注公众号&#xff1a;阿宇的编程之旅&#xff0c;回复‘书签’获取 划水摸鱼官网 网站名称&#xff1a;划水摸鱼官网网址&#xff1a;划水摸鱼官网介绍&#xff1a;提供休闲放松的内容&#xff0c;让你在忙碌之余享受片刻的宁静。 鱼塘热榜 网…

【深度揭秘】AI 幻觉背后的技术真相与应对策略,探索人工智能的未来

写在前面 AI真的能分辨真实与虚构吗&#xff1f; 如果你的 AI 助手在关键会议中搬出了一个虚构的法律先例&#xff0c;你会不会想钻地洞&#xff1f; 我们准备好为 AI 的错误买单了吗&#xff1f; 当AI的“诊断”可能让医生瞬间变成“杀手”&#xff0c;你还敢信它的建议吗&am…

uniapp/vue中实现方框的移动、缩放,旋转操作(手指操作)

效果&#xff1a; <template><view class"container"><view class"rotatable" ref"view" :style"{ left: dragLeft px, top: dragTop px, transform: scale(${scale}) rotate(${currentRotation}deg), }"src"…

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据&#xff0c;优化了分类算法&#xff0c;支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类&#xff1b;一键生成危险点报告和交跨报告&#xff1b;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:289…

Selenium CSS 选择器详细讲解

详细介绍 CSS 选择器 By.CSS_SELECTOR 在 Selenium 中&#xff0c;By.CSS_SELECTOR 是一种强大且灵活的定位方式。它使用 CSS 选择器语法来查找页面上的元素。CSS 选择器支持复杂的查询语法&#xff0c;可以根据元素的标签、类名、ID、属性等进行组合定位。 示例 HTML <!…

解决Java中的AssertionError异常的常用方法

解决Java中的AssertionError异常的常用方法 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将讨论在Java开发中常见的AssertionError异常&#xff0c;并…

递归的艺术:Python中5个递归函数经典问题与解析

递归&#xff0c;这门编程艺术中的魔法&#xff0c;它让复杂的问题变得简单&#xff0c;但初学者往往觉得它神秘莫测。别怕&#xff0c;今天我们就一起揭开递归的面纱&#xff0c;通过5个生动有趣的Python案例&#xff0c;让你轻松掌握递归的奥秘&#xff01; 1. 经典的阶乘问…

常用MQ消息中间件Kafka、ZeroMQ和RabbitMQ对比及RabbitMQ详解

1、概述 在现代的分布式系统和实时数据处理领域&#xff0c;消息中间件扮演着关键的角色&#xff0c;用于解决应用程序之间的通信和数据传递的挑战。在众多的消息中间件解决方案中&#xff0c;Kafka、ZeroMQ和RabbitMQ 是备受关注和广泛应用的代表性系统。它们各自具有独特的特…

CST电磁仿真软件的参数类型和含义【电磁仿真入门教程】

如果你是一位工程师或设计师&#xff0c;那你对电磁仿真软件CST Studio Suite一定不会感到陌生。CST软件可以帮助你模拟电磁场和电路行为&#xff0c;从而优化产品设计。本文将带你了解CST电磁仿真软件的一些关键参数&#xff0c;并解释其含义。CST电磁仿真软件的参数是指在使用…

安规管理:PLM安规管理、PLM安规管理新策略

安规管理&#xff1a;PLM安规管理、PLM安规管理新策略 随着科技的飞速发展&#xff0c;电子产品已经成为我们生活中不可或缺的一部分。然而&#xff0c;这些产品在给人们带来便利的同时&#xff0c;也可能带来触电、火灾、有害辐射等安全隐患。为了保护消费者的生命财产安全&am…

JavaScript全屏,监听页面是否全屏

在JavaScript中&#xff0c;直接监听浏览器是否进入全屏模式并不直接支持&#xff0c;因为全屏API主要是关于请求和退出全屏模式的&#xff0c;而没有直接的监听器可以告知页面何时进入或退出全屏模式。但是&#xff0c;你可以通过在你的代码中跟踪全屏状态的改变来模拟这个功能…

性能测试学习-执行测试脚本,监控性能指标

1、关于使用pymatlab库实现对数据表的增加&#xff0c;获取指定列操作&#xff0c;并在另一个py文件中调用 cursor游标的使用 """ 实现数据连接&#xff0c;并操作数据库&#xff0c;生成随机的用户数据 使用游标 """ import randomimport pym…

超越云端:Octopus v2端侧部署实现高效能语言模型

在人工智能领域&#xff0c;大型语言模型虽然在云端环境中展现出卓越的性能&#xff0c;但它们在隐私保护、成本控制以及对网络连接的依赖性方面存在不足。这些问题限制了AI技术在移动设备和边缘计算场景中的应用潜力。为了克服这些限制&#xff0c;研究者们一直在探索如何在设…

机器学习补充

一、数据抽样 数据预处理阶段&#xff1a;对数据集进行抽样可以帮助减少数据量&#xff0c;加快模型训练的速度/减少计算资源的消耗&#xff0c;特别是当数据集非常庞大时&#xff0c;比如设置sample_rate0.8.平衡数据集&#xff1a;通过抽样平衡正负样本&#xff0c;提升模型…

揭秘shopee、Lazada爆单秘诀:自养号补单策略大公开

在东南亚的电商跨境领域&#xff0c;Shopee和Lazada无疑占据了举足轻重的地位&#xff0c;为印地、马来、台湾、菲律宾、新加坡、泰国和越南等地的消费者提供了丰富的在线购物选择。随着电商竞争的日益激烈&#xff0c;许多商家开始探索各种有效的推广策略&#xff0c;其中&…

没有SSL证书,会造成哪些影响?

没有SSL证书&#xff0c;网站及其用户将会面临多种安全隐患和负面影响&#xff0c;主要包括但不限于以下几点&#xff1a; 1、安全警告&#xff1a;现代浏览器如谷歌Chrome会在用户尝试访问没有SSL证书的网站时显示明显的警告信息&#xff0c;如“不安全”标签&#xff0c;这会…