数据结构与算法学习(day2)——冒泡排序

文章目录

  • 前言
    • 冒泡排序
    • 题目
      • 题目一
      • 题目二
    • 小结

前言

(1)在本章的学习此前,需要复习前一章的内容,动手敲一遍代码解题。

(2)经过上一章的操练以后,大家应该体会到了,简化版桶排序所要申请的数组的容量大小由要排序的数中的最大值决定,所以如果我们要排序的数中最大值是210000000,那我们还得申请一个大小为210000001的数组,毫无疑问,非常浪费空间!

(3)而且,简化版桶排序的i表示数值,book[i]表示数值的数量,由于数组要求book[i]中的i的类型必须为整数,所以,如果要排序的存在小数,那简化版桶排序就失效了!

本章的学习目标:

(1)学习冒泡排序原理

(2)会用冒泡排序联系实际生活,解决编程问题

冒泡排序

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

(2)代码思路:如果有n个数进行从大到小排序,只需将n-1个数归位,也就是说要进行n-1趟操作。而”每一趟“都需要从第1位开始进行两个数的比较,将较小的一个数放在在后面,比较完毕后向后挪一位继续比较下面两个相邻数的大小,重复此步骤,直到最后一个尚未归位的数,已经归位的数则无需再进行比较(已经归位的数你还比较个啥,浪费表情)。

题目

题目一

输入n个整数,对它们用冒泡排序按从小到大或者是从大到小的顺序排列,并打印出来。

#include <stdio.h>
int main()
{int a[100], i, j, t, n;scanf("%d",&n);for (i = 1; i <= n; i++)scanf("%d",&a[i]);//冒泡排序的核心部分for (i = 1; i <= n - 1; i++){for (j = 1; j <= n - i; j++){//a[j] > a[j + 1]——从小到大排序;a[j] < a[j + 1]——从大到小排序if (a[j] > a[j + 1])  //若a[j] > a[j + 1],则a[j] 与 a[j + 1]调换位置,即大的放数组后面,故实现从小到大排序{t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;}}}//数组内的数据已排好序,这一步按顺序打印出数组内的数值for (i = 1; i <= n; i++)   //若i = 1; 则i <= n;要加等号printf("%d ",a[i]);return 0;
}

题目二

读入n个人的人名和分数,按分数从大到小排序,打印出分数对应的人名。

#include <stdio.h>
struct student
{char name[21];char score;
};   //这里创建了一个结构体,用来存储姓名和分数  
int main()
{struct student a[100], t;int i, j, n;scanf("%d",&n);   //多少个人for (i = 1; i <= n; i++)scanf("%s %d",a[i].name,&a[i].score);//按分数从高到低进行排序for (i = 1; i <= n - 1; i++){for (j = 1; j <= n - i; j++){if (a[j].score < a[j + 1].score) //按从达到小顺序排序{t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;}}}for (i = 1;i <= n; i++)  //i = 1;i <= n;printf("%s\n",a[i].name);return 0;
}

小结

冒泡排序的核心部分是双重嵌套循环,不难看出冒泡排序的时间复杂度是O(N^2)。这是一个非常高的时间复杂度,后面也没有人能成功把冒泡排序改进。

Have a nice day!

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

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

相关文章

gRPC之数据压缩Snappy、zstd

文章目录 gRPC之数据压缩Snappy一、背景二、什么是snappy1. Snappy适合场景 三、demo: Go代码实现了一个snappy压缩格式的压缩器for grpc1. 这段代码怎么保证并发安全的&#xff1f; 四、什么是zstd五、 zstd和snappy有什么区别,如何选择?六、demo: Go代码实现了一个zstd压缩格…

javascript深浅拷贝

概念 浅拷贝&#xff1a;新对象与原对象指向同一份内存地址 深拷贝&#xff1a;新对象与原对象完全独立&#xff0c;新对象与原对象指向的是两个内存地址 实现方式 浅拷贝 1.直接赋值 let source_obj {a: 1,b: 2 } let target_obj source_obj; 2.Object.assign let s…

Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

转载&#xff1a;电脑知识收藏夹 Blog Archive Windows中的命令行提示符里的Start命令执行路径包含空格时的问题 当使用Windows 中的命令行提示符执行这段指令时(测试Start命令执行带空格的路径的程序或文件问题)&#xff0c;第一行Start会成功执行&#xff0c;跳出记事本程…

Oracle 遍历变量游标

背景 由于我们的数据库系统中的游标特别多&#xff0c;DBA让我们优化&#xff0c;减少游标的使用。 电脑系统&#xff1a;windows数据库&#xff1a;Oracle数据库图形化界面工具&#xff1a;Toad&#xff0c;DBeaver(我測試的時候用的)记录日期&#xff1a;2023-09-04 具体实…

React Router 路由守卫

React Router 路由守卫 组件内路由守卫 1、下面是使用高阶组件实现路由守卫的示例代码&#xff1a; import React from react; import { Route, Redirect } from react-router-dom;const PrivateRoute ({ component: Component, isAuthenticated, ...rest }) > (<Rou…

计算机重点学科评级B-,山东省属重点高校考情分析

山东科技大学(B-) 考研难度&#xff08;☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1175字预计阅读&#xff1a;3分钟 2023考情概况 山东科技大学计…

Android12之解析/proc/pid进程参数(一百六十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

记一次诡异的Cannot find declaration to go to,Cannot resolve method

记一次诡异的 Cannot find declaration to go to&#xff0c; Cannot resolve method getOnExpressions in Join 对于项目中通常问题&#xff0c;清除缓存&#xff0c;重启idea&#xff0c;或者仔细检查语法通常都能解决问题&#xff0c;但是这次却失效了&#xff0c;以下是原…

Scala面向对象编程(高级部分)

1. 静态属性和静态方法 &#xff08;1&#xff09;回顾Java中的静态概念 public static 返回值类型 方法名(参数列表) {方法体} 静态属性… 说明: Java中静态方法并不是通过对象调用的&#xff0c;而是通过类对象调用的&#xff0c;所以静态操作并不是面向对象的。 &#xff0…

支持向量机(一)

文章目录 前言分析数据集线性可分情况下的支持向量机原始问题凸优化包解法对偶问题凸优化包解法 数据集线性不可分情况下的线性支持向量机与软间隔最大化 前言 在支持向量机中&#xff0c;理论逻辑很简单&#xff1a;最大化最小的几何间隔。但是实际编写代码过程中有一个小点需…

试用CSDN提供的AI创作助手生成关于Java个版本和未来发展的文章【AI】

本文是使用CSDN提供的AI创作帮手生成&#xff0c;出本句说明外其余均有AI生成&#xff0c;下面是我让AI列举各个Java版本的新功能和特点。 各个Java版本的新功能和特点 功能和特点&#xff1a; Java 8新功能和特点&#xff1a; Lambda表达式函数式接口方法引用Stream API接…

深入探讨Java Stream流:数据处理的新思维

文章目录 1. 流式思想1.1 输入流与输出流1.2 Stream流 2. 使用Stream流的步骤3. 获取Stream流3.1 容器3.2 数组 4. Stream流中间操作方法4.1 filter(Predicate<? super T> predicate)4.2 limit(long maxSize)4.3 skip(long n)4.4 distinct()4.5 sorted() 和 sorted(Comp…

Java使用pdfbox将pdf转图片

前言 目前比较主流的两种转pdf的方式&#xff0c;就是pdfbox和icepdf&#xff0c;两种我都尝试了下&#xff0c;icepdf解析出来有时候会出现中文显示不出来&#xff0c;网上的解决方式又特别麻烦&#xff0c;不是安装字体&#xff0c;就是重写底层类&#xff0c;所以我选择了p…

【Spring】aop的底层原理

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理 Spring 中的切面编程aop的底层原理和重点注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以…

vue递归组件

父组件&#xff1a; <template><div><treeVue :treeData"treeData"></treeVue></div> </template><script setup lang"ts"> import { reactive } from "vue"; import treeVue from "./tree.vue…

Linux查看指定端口是否被占用

在Linux中&#xff0c;可以使用多种方法来检查一个特定端口&#xff08;例如3306&#xff0c;通常由MySQL使用&#xff09;是否被占用&#xff1a; 使用netstat命令: 如果系统中已安装了netstat&#xff0c;可以使用以下命令检查3306端口&#xff1a; netstat -tuln | grep 330…

人体呼吸存在传感器成品,毫米波雷达探测感知技术,引领智能家居新潮流

随着科技的不断进步和人们生活质量的提高&#xff0c;智能化家居逐渐成为一种时尚和生活方式。 人体存在传感器作为智能家居中的重要组成部分&#xff0c;能够实时监测环境中人体是否存在&#xff0c;为智能家居系统提供更加精准的控制和联动。 在这个充满创新的时代&#xf…

科技资讯|苹果Vision Pro头显申请游戏手柄专利和商标

苹果集虚拟现实和增强现实于一体的头戴式设备 Vision Pro 推出一个月后&#xff0c;美国专利局公布了两项苹果公司申请的游戏手柄专利&#xff0c;其中一项的专利图如下图所示。据 PatentlyApple 报道&#xff0c;虽然专利本身并不能保证苹果公司会推出游戏手柄&#xff0c;但是…

Redis6搭建高可用的多主多从集群

Redis6搭建高可用的多主多从集群 环境准备搭建redis6集群安装redis6修改配置文件修改cluster-enabled修改cluster-config-file修改cluster-node-timeout 启动集群 环境准备 首先我们需要6台redis&#xff0c;那么为啥是6太呢&#xff1f;是因为我们要部署多master和多slaver集…

07-Spring Cloud

1、如何设计一个注册中心&#xff1f; 高可用&#xff1a;通过集群的方式 高并发&#xff1a;减少响应时间、提高吞吐量 并发用户数等&#xff0c;通过增加服务器性能、 扩展服务实例的方式 高性能&#xff1a;程序处理速度 考虑 数据存储结构、通信机制、集群同步。 集群…