排序相关算法--1.插入排序+冒泡排序回顾

1.基本分类

2.插入排序

特点:有实践意义(例如后期快排的优化),适应性强,一般不会到时间复杂度最坏的情况。

  1. 将第一个元素视为已经排好序的序列
  2. 取出下一个元素,在已经排好序的序列中从后往前比较,直到找到合适的位置插入。
  3. 重复步骤2,直到所有元素都插入到合适的位置。

  1. //插入排序
    #include<stdio.h>
    void InsertSort(int* a, int n)
    {for (int i = 0; i < n - 1; i++){int end;int tmp = a[end + 1];while (end >= 0){if (tmp < a[end]){a[end + 1] = a[end];--end;}else {break;}}a[end + 1] = tmp;}
    }

上图一种特殊情况:此时不是break出来的而是一直进行--

所以不走else了,因此将最后一句放在外面无论是哪种情况都可以

单趟

排序:先理解单趟然后加上循环

整清楚边界。因为是从0开始访问的,所以只能访问到n-1;

因此在访问的时候只循环到n-2;,

i的最后一个值是n-2;所以是i<n-1;

计算插入排序的时间复杂度

时间复杂度计算最坏情况:逆序(就相当于一个等差数列)O(N^2)   N的平方。

最好:顺序 O(N)(只比一遍)

介于两者中间。

3.冒泡排序回顾

特点:没有实践意义,一般只用于教学

在指针基础知识点合集2(基础入门到深入理解)中有用指针讲解过一遍。

如果不用今天再供一种不用指针的方法。

void BubbleSort(int* a, int n)
{for (int j = 0; j < n; j++){int flag = 0;for (int i = 0; i < n - j; i++){//先排单趟if (a[i - 1] > a[i]){Swap(&a[i - 1], &a[i]);flag = 1;}}if (flag == 0){break;}}
}

计算插入排序的时间复杂度

时间复杂度计算最坏情况:O(N^2)   N的平方。

最好: O(N)(直接就有序)

(和插入排序是一样的)

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

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

相关文章

硅纪元AI应用推荐 | 百度橙篇成新宠,能写万字长文

“硅纪元AI应用推荐”栏目&#xff0c;为您精选最新、最实用的人工智能应用&#xff0c;无论您是AI发烧友还是新手&#xff0c;都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能&#xff0c;开启智慧新时代&#xff01; 百度橙篇&#xff0c;作为百度公司在202…

算法通关:004_1选择排序

代码一定要自己手敲理解 public class _004 {//选择排序&#xff0c;冒泡排序&#xff0c;插入排序//交换public static void swap(int[] arr,int i ,int j){int temp arr[i];arr[i] arr[j];arr[j] temp;}//选择排序public static void selectSort(int[] arr){if(arr null…

0基础学会在亚马逊云科技AWS上搭建生成式AI云原生Serverless问答QA机器人(含代码和步骤)

小李哥今天带大家继续学习在国际主流云计算平台亚马逊云科技AWS上开发生成式AI软件应用方案。上一篇文章我们为大家介绍了&#xff0c;如何在亚马逊云科技上利用Amazon SageMaker搭建、部署和测试开源模型Llama 7B。下面我将会带大家探索如何搭建高扩展性、高可用的完全托管云原…

初次用bable遍历vue项目下的中文

利用 babel 找到 AST 中的中文 // vite-plugin-babel-transform.js const parser require(babel/parser) const traverse require(babel/traverse).default // const types require(babel/types) // const generate require(babel/generator).default const fs require(f…

nginx的正向代理和反向代理

nginx的正向代理和反向代理 正向代理以及缓存配置&#xff1a; 代理&#xff1a;客户端不再是直接访问服务端&#xff0c;通过代理服务器访问服务端 正向代理&#xff1a;面向客户端&#xff0c;我们通过代理服务器的IP地址访问目标服务端。 服务端只知道代理服务器的地址&am…

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作

公司内部配置GitLab&#xff0c;通过SSH密钥来实现免密clone、push等操作。以下是配置SSH密钥以实现免密更新的步骤&#xff1a; 1.生成SSH密钥 在本地计算机上打开终端或命令提示符。输入以下命令以生成一个新的SSH密钥&#xff1a;ssh-keygen -t rsa -b 4096 -C "your…

《C++设计模式》状态模式

文章目录 一、前言二、实现一、UML类图二、实现 一、前言 状态模式理解最基本上的我觉得应该也是够用了&#xff0c;实际用的话&#xff0c;也应该用的是Boost.MSM状态机。 相关代码可以在这里&#xff0c;如有帮助给个star&#xff01;AidenYuanDev/design_patterns_in_mode…

2970.力扣每日一题7/10 Java(暴力枚举)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 解题思路 解题方法 时间复杂度 空间复杂度 Code 解题思路 incre…

Elastic Stack--15--聚合查询(SUM、MAX、MIN、AVG)案例

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 ES的聚合查询(SUM、MAX、MIN、AVG)1.求和查询2.求平均值3.最大最小值查询4.唯一值查询 (类似于sql中的distinct 去重)5.stats聚合 ES的聚合查询(SUM、MAX、MIN、AVG…

从零开始实现大语言模型(三):Token Embedding与位置编码

1. 前言 Embedding是深度学习领域一种常用的类别特征数值化方法。在自然语言处理领域&#xff0c;Embedding用于将对自然语言文本做tokenization后得到的tokens映射成实数域上的向量。 本文介绍Embedding的基本原理&#xff0c;将训练大语言模型文本数据对应的tokens转换成Em…

[leetcode]kth-smallest-element-in-a-sorted-matrix 有序矩阵中第k小元素

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool check(vector<vector<int>>& matrix, int mid, int k, int n) {int i n - 1;int j 0;int num 0;while (i > 0 && j < n) {if (matrix[i][j] < mid) {num i 1;j;…

【全面介绍语言模型的原理,实战和评估】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🥂语言模型的原理 🥂语言模型基于统计和机器学习的原理,目标…

IoC源码分析——singleton bean创建与循环依赖

文章目录 概要主流程bean的创建循环依赖 概要 容器初始化时&#xff0c;会创建单例bean&#xff0c;本文主要关注单例bean是如何创建的&#xff0c;并说明源码中是如何解决循环依赖的 代码入口 Testpublic void testIoC() {// ApplicationContext是容器的高级接口&#xff0c…

MACOS查看硬盘读写量

一、安装Homebrew 按照提示进行安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"二、安装smartmontools brew install smartmontools三、查看硬盘读写量等信息 sudo smartctl -a /dev/disk0

韦尔股份:深蹲起跳?

利润大增7倍&#xff0c;是反转信号还是回光返照&#xff1f; 今天我们聊聊光学半导体龙头——韦尔股份。 上周末&#xff0c;韦尔股份发布半年业绩预告&#xff0c;预计上半年净利润13至14亿&#xff0c;同比增幅高达 754%至 819%。 然而&#xff0c;回首 2023 年它的净利仅 …

【python】PyQt5可视化开发,鼠标键盘实现联动界面交互逻辑与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Python | Leetcode Python题解之第227题基本计算器II

题目&#xff1a; 题解&#xff1a; class Solution:def calculate(self, s: str) -> int:n len(s)stack []preSign num 0for i in range(n):if s[i] ! and s[i].isdigit():num num * 10 ord(s[i]) - ord(0)if i n - 1 or s[i] in -*/:if preSign :stack.append(…

Unity到底有无collider可视化,方便调试子弹,ACT,做Demo等

参照日本程序员的代码,改了一些,算是支持MeshCollider 好像确实就是日本《博客》比较多这类,可视化的调试资料 UnityでデバッグをするときColliderを可視化したいことってありますよね。 コライダーを見える化するには Physics Debuggerを使う可視化スクリプトを使うの2通り…

快速入门,springboot知识点汇总

学习 springboot 应该像学习一门编程语言一样&#xff0c;首先要熟练掌握常用的知识&#xff0c;而对于不常用的内容可以简单了解一下。先对整个框架和语言有一个大致的轮廓&#xff0c;然后再逐步补充细节。 前序: Spring Boot 通过简化配置和提供开箱即用的特性&#xff0c…

Dart笔记:Isolate及其通信机制

Dart笔记 多隔离及其通信机制 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/a…