啊哈算法——第一章第二节:冒泡排序

啊哈算法:揭秘编程中的高效解决方案 在计算机科学领域,算法是解决问题的一系列定义明确的指令集合,是编程和软件开发不可或缺的一部分。”啊哈算法”(Aha Algorithm)是一种特别设计的算法,它以简洁、高效、易于理解著称,特别适合于解决复杂度较高、计算量大的问题。本章将介绍啊哈算法的定义和主要特点。在计算机科学中,算术运算是最基本的运算之一。它涉及基本的数学运算,如加法、减法、乘法和除法。优化算术运算的过程,可以减少算法的时间复杂度和空间复杂度,从而提升程序的运行效率和响应速度。 阅读详情

       学习算法不奇怪,啊哈算法很哇塞!大家好,我是pythonitstream。今天我们又来讲一下啊哈磊(原名纪磊)写的《啊哈算法》一书

目录

前言

一、冒泡排序是什么

二、实战应用

二、(1)、分析

二、(2)、代码

总结


前言

       上期讲了桶排序,但是桶排序有点太局限了。所以,今天我们来学习冒泡排序。


一、冒泡排序是什么

冒泡排序对比桶排序的时间复杂度就高多了,是O(N²)。

冒泡排序就是:每次比较两个相邻的元素, 如果他们的顺序错误就把它们交换过来。

好了,中心思想结束了……

二、实战应用

有一个班想让我们统计一下高考分数,分别是577.5,621,771.5,478,699.5,401.5

二、(1)、分析

首先,它包含小数,所以不能用桶排序。考试分数肯定是从大到小啊,所以说,越小的越往后

即使这个班有个别同学考得惨不忍睹,但是我相信那是个别同学行为,还是值得排序的

首先我们要搞一个列表,用来装数:

a=[0 for i in range(101)] #用来装数的列表,最大值100

然后我们要输入。上次输入的方法是挺不错,就是浪费手。这次换一个简便点的:

num=int(input('请输入你要输入数的数量:'))
ask=input('请输入数:') #输入
ask=ask.split(' ') #字符串方法,split指在某几个字符那里分割字符串
for i in range(num):
    ask[i]=int(ask[i]) #一个个的变成整数

虽然也挺费手,但是好歹不用多行输入

然后我们要排序了!重点来了!!!比较大小!!

for j in range(0,num-2):
    for k in range(0,num-j-1):
        if ask[k]<ask[k+1]: #比较大小
            t=ask[k]
            ask[k]=ask[k+1]
            ask[k+1]=t    #文中解释

这里做出解释:

只要你搞过竞赛,你就一定知道这个方法替换两个值的内容。我虽然没有搞过,但是也是浅读过算法竞赛书的。 

最后,打印数:

for l in ask:
    print(l)

 结束!!

二、(2)、代码

代码实现是酱紫的:

a=[0 for i in range(101)] #用来装数的列表,最大值100

num=int(input('请输入你要输入数的数量:'))
ask=input('请输入数:') #输入
ask=ask.split(' ') #字符串方法,split指在某几个字符那里分割字符串
for i in range(num):
    ask[i]=int(ask[i]) #一个个的变成整数

for j in range(0,num-2):
    for k in range(0,num-j-1):
        if ask[k]<ask[k+1]: #比较大小
            t=ask[k]
            ask[k]=ask[k+1]
            ask[k+1]=t    #文中解释

for l in ask:
    print(l)

请输入你要输入数的数量:6

请输入数: 577.5 621 771.5 478 699.5 401.5

771.5
699.5
621.0
577.5
478.0
401.5


总结

冒泡排序的确比桶排序好,但是还是有些bug,所以请看下期——快速排序!

椭圆曲线点加的推导公式(一) 椭圆曲线点加推导过程 阅读详情

相关推荐

nvidia-container-toolkit 国内镜像源安装

nvidia-container-toolkit 国内镜像源安装

湫然的博客 1万+

《啊哈算法》第一章--排序(解析+代码)

桶排序,冒泡排序,快速排序 + 小哼买书(NOIP2006普及) 我会在原书基础上适当创新

IT OR 考公? 1837

Sylvester结式法求解多项式方程

Sylvester结式法,结式,消元法,ctfshow 七夕杯 LUCK7,crypto,WriteUp

u010883831的博客 4530

《啊哈算法》学习——冒泡排序

学习啊哈算法第二天,第一章第二节迷人的冒泡排序。问题描述:桶排序过于浪费空间,并且没办法比较小数和结构体问题。分析及思路基本思路为:每次比较两个相邻的元素,如果他们顺序错误就进行交换。如:进行从大到小排序,即越小的越靠后。(1)首先比较第一位和第二位,然后比较第二位和第三位,以此类推,最终将最小的数交换到了最后一位。称此次比较为第一趟。(2)接着按照(1)中步骤继续比较除最后一位的数字序列,即进行第二趟比较。代码实现。

weixin_45704362的博客 172

WorkBuddy驱动SolidWorks实测:AI建模流程、参数化与许可排查指南

AI辅助三维建模正在改变工程师的重复劳动方式。其核心理念不是替代人的设计决策,而是通过AI智能体接管CAD软件中的草图绘制、特征创建、尺寸修改等高频操作,让工程师从繁琐的GUI交互中解放出来。在SolidWorks这类主流CAD平台上,这类AI助手的落地依赖环境稳定、需求描述清晰和参数化建模规范。通过将外径、孔距等关键尺寸定义为全局变量并用方程式驱动,可实现改一个数、模型自动更新的高效流程;同时,遇到“无法获得许可”等环境故障时,需要按服务状态、安全软件隔离、干净卸载的顺序排查。以WorkBuddy驱动So

weixin_28559803的博客 360

处理SAP资产折旧AFAB 过账报错:“科目 8019010100 要求一个成本会计分配”

本文介绍如何处理资产折旧报错 ““科目XXXXXXX 要求一个成本会计分配””

IT小职员 2774

啊哈算法——第一章第一节:桶排序

桶排序真快!

pythonitstream的博客 722

MATLAB基础应用精讲-【强化学习】Actor - Critic 算法(附python代码实现)

这种架构结合了策略梯度方法(Policy - Gradient Methods)和价值函数估计方法(Value Function Estimation Methods)的优点。在强化学习中,智能体(Agent)需要通过与环境(Environment)的交互来学习最优的行为策略,以获得最大的累积奖励(Cumulative Reward)。

qq_36130719的博客 361

《啊哈,算法》第一章、排序

一、排序 1、桶排序(简化版) 如:对 5,3,5,2,8 进行排序 初始化:申请一个大小为10的数组 int a[10],并将a[0]~a[10]初始化为0; for (i = 0; i <= 10; i++) { a[i] = 0; } 记录次数:进行for循环,用a[i]的值记录5,3,5,2,8这几个数出现的次数; for (i = 1; i <= 10; i++) { scanf("%d", &t)

qq_45467524的博客 1376

[SoC]SoC验证中bootcode与firmware相关验证经验总结

本文总结了SoC验证中bootcode和firmware的验证经验。重点介绍了两种数据加载方法:1)使用Verilog系统函数$readmemh/$readmemb直接写入ROM/ARAM,需注意文件路径、格式和斜杠方向;2)通过Memory Hierarchy在initial块中操作,需要添加适当延时并注意路径拼接。文章还提供了在testcase phase中先读取数据到HASH再写入SRAM的示例,并强调加载后需使能edc_bypass以避免ECC错误。验证过程中需特别注意文件位置、格式要求及路径处理等

元直的博客 2497

【VibeCoding系列】小白入门指南:模型选择、编辑器选择、项目预定全分析

开箱即用:下载安装就能用,不用配 API Key(也可以自己配)Cmd+K 快速修改:选中代码,按 Cmd+K,直接让 AI 修改Cmd+L 对话:侧边栏聊天,支持引用文件和代码@文件引用:输入 @ 就能引用项目中的文件,AI 自动读取上下文Agent 模式:告诉 AI 一个需求,它自动跨文件修改下载地址cursor.com(免费版有额度限制,足够入门)✅下载 Cursorcursor.com),安装打开✅选一个小项目(个人名片页 or Todo List)✅按照七步工作流开干。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 209

《啊哈!算法》 第一章 排序

《啊哈!算法》是一本适用于小白的算法书,里面的内容较为基础,这篇内容是我自学算法的记录,有些代码是个人的理解,与书上内容有所出入,内容如有错误,欢迎大家指正。

m0_64238771的博客 408

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java玩转《啊哈算法》排序之冒泡排序

大家好!本人最近看了下《啊哈算法》,写的确实不错,生动形象又有趣(~~希望作者打波广告费~~ )。但对我来说,稍显遗憾的是,书籍代码是c语言,而不是本人常用的Java。那就弥补遗憾,说干就干,把这本书的示例语言用java给翻译一遍!!!于是就有了本篇博客,这篇主要是讲解冒泡排序。

Qizhi_Hu的博客 1137

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

啊哈算法的第一章——排序的笔记

啊哈算法的第一章——排序的笔记1.桶排序2.冒泡排序3.快速排序 在第一章中,作者介绍了三种排序方法: 以下是它们的实现过程: 1.桶排序 示例代码如下: // 对数据范围在0到1000之间的整数进行排序 #include<stdio.h> int main() { int book[1001], n;//book有记录、标记的意思 for (int i = 0; i <= 1000;i++) { book[i] = 0;//初始化每一个“桶”

ZY_yin的博客 711

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java玩转《啊哈算法》排序综合篇之小哼买书

各位大哥大姐,兄弟姐妹们好呀!本人最近看了下《啊哈算法》,说来惭愧,买几年了,当初看了一会儿就吃灰了。不过写的确实蛮好的,生动形象,精准有趣。但稍显遗憾的是,书籍示例代码是c语言,不是本人常用的Java。那就弥补遗憾,说干就干,把这本书的示例语言用java走一遍!!! 顺便附上自己的一些理解。

Qizhi_Hu的博客 1006

啊哈算法 之 冒泡排序

算法介绍 冒泡算法1956年开始就有人开始研究,

wocacaaa的专栏 1442

《啊哈算法》的Java现实 | 第一章:排序

啊哈算法 第一章:排序 桶排序 步骤: 1.申请一个大小为n的数组a[n],并将数组初始化为0 2.输入数组,当输入第一个数字为5时,就在对应的a[5]的值在原来的基础上+1,即将a[5]的值从0改为1 3.从大到下,倒序进行输出 package ch1; import java.util.Scanner; public class Test01 { public static void main(String[] args){ Scanner sc = new Scanner(Sys

小七自学博客 561

《啊哈!算法》第一章 - 第二节 - 冒泡排序(Java实现)

《啊哈!算法》第一章 - 第二节 - 冒泡排序(Java实现)冒泡排序冒泡排序的升序排序冒泡排序的降序排序 冒泡排序 冒泡排序的基本思想:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。 举个例子: 将 12 35 99 18 76 这 5 个数进行从大到小的排序 既然是从小到大排序,那肯定就是越小越靠后了。 首先比较第 1 位和第 2 位数字的大小,现在第 1 位是 12,第 2 位是 35。发现 12 比 35 要小,因为我们希望越小越靠后嘛,因此需要交换这两个数字的位置。交换之后这 5

Pola_的博客 891

啊哈!算法第一章第二节---冒泡排序

冒泡排序冒泡排序的基本思想是:每次比较相邻两个元素的大小,如果顺序错误就交换位置。 比如说有5个数12 35 99 18 76,要从大到小排序。所以越小的越靠后。 首先比较第1位和第2位的大小。由于12小于35,所以他们两个交换位置。交换后:35 12 99 18 76. 然后比较第2位和第3位的大小。由于12小于99,所以他们两个交换位置。交换后:35 99 12 18 76. ...

ahaoopa10823的博客 197

啊哈算法——第一章:排序

第一章:排序 桶排序:O(N+M) 桶排序的思想应该是一个非常好理解的思想,假设对一批正整数数进行排序,这些数中最大的数为N,则创建一个[0,N]的数组A。接着输入,输入ai,则A[ai] ++。假如我们要输出降序排序,则从N遍历到0,如果A[i]非零,则输出i。 它的时间复杂度并不高,但是它在空间上的牺牲非常大,且局限性很大。 冒泡排序:O(N2) C语言课程上一定介绍过冒泡排序和选择排序,其思想是在某一趟中,比较某个数和它下一个数是否满足升序或降序的规则,如果不满足,则交换两个数的位置,经过N-1躺遍历

fatfairyyy的博客 245

[啊哈算法] 第一章-排序

《啊哈算法》第一章-排序

furoto_的博客 397

【啊哈算法】二、冒泡排序

今天来学习另一个排序算法,这个算法解决了桶排序的缺点,但在某些地方比如时间复杂度不如桶排序。 文章目录一、概念二、特点三、例题(一)冒泡核心代码1. 平均复杂度为O(N^2)的,无论数据是否有序。2. 当数据有序时,时间复杂度为O(N)。(二)成绩排序 一、概念 冒泡排序:是一种排序算法,它的基本思想是每次比较相邻的元素,如果它们的顺序错误就把它们交换过来,每次都可以确定一个最大或最小数的位置。 ...

qq_43411555的博客 407

《啊哈算法》学习一 排序

《啊哈算法》学习笔记一——排序算法,桶排序、冒泡排序、快速排序。

tanfu16的博客 293

【Java】《啊哈算法》-第一章排序

排序:桶排序、冒泡排序、快速排序

qq_44458489的博客 333

《啊哈算法》 解密 QQ 号 —— 队列(python实现)

q=[0]*102 #print(q) q[1]=6 q[2]=3 q[3]=1 q[4]=7 q[5]=5 q[6]=8 q[7]=9 q[8]=2 q[9]=4 #print(q) head=1 tail=10 while head<tail: print("%d" %q[head],end=" ") head+=1 q[tail]=q[head] tail+=1 ..

青少年趣味编程 1751

啊哈算法总结之第一章——排序

在第一章中:对于排序讲了三种:桶排序,冒泡排序,快速排序。桶排序的核心算法:int a[101] = {0}; //将所有数组元素都初始化为0for (i=0; i<n; i++) { scanf("%d", &t); a[t]++; }for (i=0; i<101; i++) for (j=0; j<a[i]; j++) { printf("%

hpf247的博客 818
上一篇: 啊哈算法——第一章第一节:桶排序
下一篇: python tkinter Button的使用
pythonitstream
博客等级 码龄5年 40粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值