排序算法 1 —— 冒泡排序、选择排序、插入排序、快速排序

冒泡排序/插入排序/选择排序/快速排序/归并排序C++详细代码 冒泡排序:比较相邻的元素,如果第一个比第二个大,就相互交换,对每一对相邻的元素做相同的工作,第一次排序使最大的元素移动到最右端;进行第二次排序,同样的步骤使次大的元素移动到n-1的位置上;重复上述步骤,直到排序完成。 class Solution { public: vector<int> BubbleSort(vector<int>& arr) { //冒泡排序 int n = arr.size(); for(int i=.. 阅读详情


前言

面对庞大的数据,我们可能需要进行排序。这篇文章,我将讲解冒泡排序、选择排序、插入排序和快速排序。创作不易,还望三连。


一 冒泡排序

#include <iostream>
using namespace std;
int a[105];  // 请根据自己的需求设置数组的大小
int main()
{
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		cin>>a[i];
	}
	for(int i=n-1; i>=1; i--)
	{
		bool flag=false;
		for(int j=1; j<=i; j++)
		{
			if(a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
				flag=true;
			}
		}
		if(!flag)
		{
			break;
		}
	}
	for(int i=1; i<=n; i++)
	{
		cout<<a[i]<<" ";
	}
	return 0;
}

二 选择排序

#include <iostream>
using namespace std;
int a[105];  // 请根据自己的需求设置数组的大小
int main()
{
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		cin>>a[i];
	}
	for(int i=1; i<=n-1; i++)
	{
		int MIN_I=i,MIN=a[i];
		for(int j=i+1; j<=n; j++)
		{
			if(a[j]<MIN)
			{
				MIN_I=j;
				MIN=a[j];
			}
		}
		swap(a[i],a[MIN_I]);
	}
	for(int i=1; i<=n; i++)
	{
		cout<<a[i]<<" ";
	}
	return 0;
}

插入排序

#include <bits/stdc++.h>
using namespace std;
int a[105];  // 请根据自己的需求设置数组的大小
int main()
{
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		cin>>a[i];
	}
	for(int i=2; i<=n; i++) 
	{
		int temp=a[i],low=0,high=i-1;
		while(low<=high)
		{
			int mid=(high+low)/2;
			if(a[mid]>temp)
			{
				high=mid-1;
			}
			else
			{
				low=mid+1;
			}
		}
		for(int j=i-1; j>=low; j--)
		{
			a[j+1]=a[j];
		}
		a[low]=temp;
	}
	for(int i=1; i<=n; i++)
	{
		cout<<a[i]<<" ";
	}
	return 0;
}

快速排序

#include <bits/stdc++.h>
using namespace std;
int a[105];  // 请根据自己的需求设置数组的大小
void quicksort(int left,int right,int a[])
{
	int i,j,t,temp;
	if(left>right) return;
	temp=a[left];
	i=left;
	j=right;
	while(i!=j)
	{
		while(a[j]>=temp && i<j) j--;
		while(a[i]<=temp && i<j) i++;
		if(i<j) swap(a[i],a[j]);
	}
	a[left]=a[i];
	a[i]=temp;
	quicksort(left,i-1,a);
	quicksort(i+1,right,a);
}
int main()
{
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		cin>>a[i];
	}
	quicksort(1,n,a);
	for(int i=1; i<=n; i++)
	{
		cout<<a[i]<<" ";
	}
	return 0;
}

总结

以上就是今天要讲的内容,希望你有所感悟。

十大排序算法详解(一)冒泡排序、选择排序、插入排序、快速排序、希尔排序 冒泡排序、选择排序、插入排序、快速排序、希尔排序 阅读详情

相关推荐

【Java学习笔记】排序算法:冒泡排序、快速排序、选择排序、插入排序算法思想及其Java代码实现

1、冒泡排序 算法思想: 从第一个元素开始,每个元素都与它的下一个元素比较,如果该元素比下一个元素大,则交换他们两个的值。这样一轮操作以后,整个数组中最大的值就被换到了最后一个,同理,对最后一个元素之前的元素再次进行重复操作,每次都找到剩余元素中的最大值并换到未排序部分的最后一个,就像泡泡一样不断浮出水面。对于有n个元素的序列,循环操作n-1次即可完成排序。 代码实现: import java....

ENKU1的博客 418

常见排序算法(1):冒泡排序、选择排序、插入排序、希尔排序、快速排序

它的主要思想是将待排序的数组分成若干个子序列进行插入排序,然后再对整个序列进行插入排序。实现过程中,需要预先设定一个。

m0_73589720的博客 800

PT静态时序分析实战:从基础命令到高级报告解析

本文详细介绍了PT(PrimeTime)静态时序分析(STA)的实战技巧,从基础命令如pt_shell和report_timing的使用,到高级报告解析与问题排查。通过丰富的实例和脚本示例,帮助工程师快速掌握时序分析的核心技能,提升芯片设计验证效率。

weixin_29289821的博客 955

Day 1 关于排序算法(冒泡排序,选择排序,插入排序,快速排序)

(1)选定列表中一个最小的元素min(通常假设第一个元素),再对列表进行遍历,从而找出真正的最小的元素,交换位置。再将第二个元素作为最小的元素,重复上述步骤,从而实现排序。(1)找到一个中间值,使它左边的元素都小于中间值,右边的元素都大于中间值。(1)将无序列表中的元素插入有序列表中,通过遍历无序列表中的元素与有序列表中的元素相比较,寻找合适的位置。(1)简而言之,就是遍历列表中的元素,使两两相邻元素进行比较,看是否交换位置。(2)python代码实现。(2)python代码实现。

m0_59354113的博客 347

提升AI智能体回复质量:扣子平台提示词优化技巧与案例解析

本文深入探讨了在扣子平台上优化AI智能体提示词的关键技巧与实战案例。通过分析提示词设计的核心原则、业务场景适配策略以及平台高级功能应用,帮助开发者显著提升AI Agent的回复质量。文章特别强调了结构化提示词设计和A/B测试评估的重要性,并提供了电商客服场景的完整优化案例。

weixin_30897233的博客 538

5.2 自抗扰控制 (ADRC)

自抗扰控制(Active Disturbance Rejection Control, ADRC)是由韩京清研究员于1998年提出的一种不依赖被控对象精确数学模型的新型控制技术[reference:0]。其核心思想是将系统的模型不确定性、内部参数摄动以及外部负载变化等所有影响统一定义为“总扰动”,通过一个名为扩张状态观测器(ESO)的环节对其进行实时估计并主动补偿,从而实现动态解耦和强鲁棒性。

技术工作者 1178

排序算法(1)-冒泡排序,选择排序,插入排序,希尔排序,快速排序

一些基本的排序算法: package tenSortingMethods; /** * @author zhangdi * @description 排序算法 * @Date 20180531 */ public class Sort { public static void main(String[] args) { int[] arr = {6,1,2,...

Ryze 866

【ComfyUI】Wan 2.2 14B 首尾帧转视频 平滑过渡

本文介绍了基于 Wan2.2 ComfyUI 的视频生成工作流,通过预训练模型、提示词与参考图像的结合,实现高质量视频合成。工作流采用高低噪声模型与 LoRA 模块优化风格与细节,确保画面过渡平滑稳定。核心流程包括模型加载、图像输入、提示词编码、潜空间采样、解码与视频合成,最终生成动态转场视频。节点设计涵盖 CLIPTextEncode、KSamplerAdvanced 等关键模块,协同完成从文本到视频的全链路生成。正向提示词作为核心驱动力,直接影响视频的动作、镜头与画面变化。

Mr数据杨 1704

基础排序算法(1)-冒泡排序/插入排序/选择排序/归并排序/快速排序

几种基础排序算法及其比较 1.冒泡排序 2.插入排序 3.选择排序 4.归并排序 5.快速排序 6.计数排序 1 冒泡排序 思路(从小到大): (1)假设数据长度为N。总共要排序N-1轮。 (2)在每一轮排序中。相邻两个元素之间进行比较。不符合排序顺序的两个进行位置交换。每一轮结束后。教大的元素都被移到了最右侧。 冒泡思路示意图 代码示意 去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示...

aPigCanCRUD的博客 392

深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计

大家好,我是微学AI ,今天给大家介绍一下深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计。高中数学自适应测试系统旨在通过精准评估学生能力,用最少的题目发现其薄弱环节,并提供定制化的学习计划,帮助学生快速提升成绩。同时,系统结合了AI大模型实现自动判卷、生成报告,减轻教师负担,并支持个性化作业布置,使教学更加高效。学生可以清晰了解自身学习状态,教师也能获得精准的学生画像,实现差异化教学。

微学AI的博客 446

YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图)

YOLOv11 由 Ultralytics 在 2024 年 9 月 30 日发布, 最新的 YOLOv11 模型在之前的 YOLO 版本引入了新功能和改进,以进一步提高性能和灵活性。YOLO11 在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 28万+

十大排序算法【1】---冒泡排序、快速排序、选择排序、插入排序、希尔排序

简单用C语言写了5种常见排序算法

weixin_45690131的博客 253

【AI应用实战-Codex】Mac intel芯片下安装Codex(二)

摘要:本文介绍了在Intel芯片Mac上安装OpenAI Codex桌面应用时遇到的问题及解决方法。由于官方仅提供ARM64版本,导致Intel Mac无法直接运行。解决方案包括:1)使用社区脚本将ARM版DMG与x64 Electron重新打包成兼容版本;2)使用VSCode插件配合CLI作为替代方案。文章详细记录了重新打包过程中遇到的"electron_common_owl_features"绑定缺失错误,通过注入stub代码、重算ASAR完整性哈希等步骤成功解决问题。最终生成的Co

3548

Java实现排序算法 1:冒泡排序+选择排序+插入排序+堆排序+快速排序

class Sort { /** * 排序算法之冒泡排序 * @author 赵庚东 * 时间复杂度:O(N^2) * 空间复杂度:O(1) * 稳定性:稳定排序 * 大概思路:如果有N个元素将要进行比较大小,进行N-1次循环,每次循环找出当前部分中最大的数放到 * 该部分最后。 */ public static void bubble...

NiuPlus 415

C#实现OPC客户端与S7-1200 PLC通信:工控场景稳定通信的实战指南(附完整代码)

标准化优先:OPC UA是工业通信的标准,相比直接通信,更适合多设备集成的工控场景;稳定性第一:必须封装断线重连、异常处理、资源释放逻辑,满足7×24小时运行需求;效率优化:高频采集场景优先用批量读写,避免单个变量频繁请求;细节把控:节点ID、变量类型、端口配置等细节是新手最容易踩坑的地方,建议先用UA Expert验证。这套代码和方案已在多个工业项目中落地,从单台S7-1200到多台S7-1200/1500集群,都能稳定运行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1041

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序_冒泡排序,快速排序

3、在走的过程中,若end遇到小于key的数,则停下,begin开始走,直到begin遇到一个大于key的数时,将begin和right的内容交换,end再次开始走,如此进行下去,直到begin和end最终相遇,此时将相遇点的内容与key交换即可。在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。5.将key的左序列和右序列再次进行这种单趟排序,如此反复操作下去,直到左右序列只有一个数据,或是左右序列不存在时,便停止操作,此时此部分已有序。

2401_87555420的博客 1161

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

选择排序,插入排序,冒泡排序,快速排序

【代码】选择排序,插入排序,冒泡排序。

m0_74029567的博客 184

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

1.2 希尔排序 二.选择排序 2.1 单向选择排序 2.2双向选择排序 2.3 堆排序 堆序详情堆排序 三.交换排序 3.1 冒泡排序 3.2 快速排序 3.2.1 Hoare排序 这里定义一个left为左,right为右,将任意左右位置两边定义一个基准值,根据基准值的大小,直到left为大于基准值数,right为小于基准值数停下,若定义左边为基准值则右边先走,同理右边为基准值左边先走。

Freedom的博客 1万+

js实现常用排序算法 --冒泡排序,选择排序, 插入排序,快速排序,

JavaScript实现十大常用排序算法 冒泡排序 选择排序 插入排序 快速排序 归并排序 希尔排序 堆排序 计数排序 桶排序 计数排序 冒泡排序: 原理 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一...

知无涯 4398

排序算法 |冒泡排序、选择排序、插入排序,快速排序

排序算法|冒泡排序、选择排序、插入排序,快速排序 冒泡排序 选择排序 插入排序 快速排序

weixin_42054526的博客 382

【JavaSE与数据结构】排序算法之冒泡排序,选择排序,插入排序与希尔排序

本篇文章带大家认识排序算法——冒泡排序,选择排序,插入排序与希尔排序,其中冒泡排序,选择排序,插入排序是基础的排序算法,希尔排序是插入排序的优化,四种排序算法全部都是基于比较的排序算法,本文将以图解动图的方式描述算法实现过程,实现代码为java。

未见花闻的博客 1524

简单排序算法Java实现(选择排序、插入排序、冒泡排序、快速排序)

对常见的几种排序算法进行了实现,上传,方便后续复习。 public class SortDemo { static int[] arrayInit; public static void main(String[] args) { //创建数组 createArrayNum(); //存储未排序数组,方便后续多种排序使用 ...

SomeIDEA 258

常见排序算法集合(快速排序、归并排序、插入排序、冒泡排序、选择排序、希尔排序、堆排序)

常用的排序算法 在C++里可以通过std::sort()进行快速排序,但是熟悉各种排序算法可以加深自己对算法的基本理解。常用的排序算法包括:快速排序、归并排序、插入排序、冒泡排序、选择排序、希尔排序、堆排序。 选择排序:初始序列中找到最小元素,放在序列最起始位置作为已排序序列。从剩余元素中查找最小元素,放在已排序数组最后。直到所有元素排列完毕。 void select(int arr[],int len) { for (int i = 0;i < len - 1;i++) {

Wang。 448

Java 冒泡排序,选择排序,插入排序,快速排序,归并排序

冒泡排序法 每次排序将最大的一个数字放到数组末尾,第二次排序将第二大的排到数组倒数第二个位置,如此重复,直到排完。 时间复杂度为O(n^2),因为经历了两个for循环。 第一层i的循环代表每个元素都要比较一轮。第二层j=0表示从每一轮都要第一个开始比。 j&lt;a.length - 1 - i的原因是后面i个元素已经排好了,已经为最大的几个了,无需再比较。 public static...

wanderlustLee的博客 847

常见5种排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序,python实现

目录一.冒泡排序二.选择排序三.插入排序四.快速排序(较难理解)五.归并排序 一.冒泡排序 算法描述:相邻元素两两进行比较,满足条件则交换位置,每一次遍历都会将剩余元素中最大的元素归位。 # 最坏时间复杂度:n2 # 最优时间复杂度:n,代码需优化,如果遍历一遍后发现没有要交换的元素,则结束排序 # j为遍历的次数,i为每次遍历比较的次数 # 稳定 # 参考:https://www.cnblogs...

The world's your oyster 550

冒泡排序,选择排序,快速排序,插入排序,折半选择排序

#include #define MAX 1000 using namespace std; //简单插入排序 void InsertSort(int a[],int len) { for(int i=1;i<len;i++) { int j; int temp; for(j=i-1;(j>=0)&&(a[j]>a[i]);j--) ; temp=a[i]; for(

a523526的专栏 865
上一篇: 每日一道编程题:计算2的N次方
下一篇: 递归实现 n^k
Python_enjoy
博客等级 码龄4年 1201粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值