用蛮力法解决冒泡排序

蛮力法实现最近对,凸包,选择排序,冒泡排序 算法设计与分析,用蛮力法实现最近对,凸包,选择排序,改进的冒泡排序 立即下载

冒泡排序是蛮力法的另一个经典体现。

算法思想:比较列表中相邻的元素,如果是逆序的话,就交换他们的位置。重复多次之后,最大的元素就排到了最后一个位置。第二遍操作将第二个元素排到了倒数第二个位置上,这样一直依次比较下去,直到  n-1  遍之后,就排好了整个列表。

下面是我的代码实现:C++
#include 
using namespace std;
int main()
{
    int i,j,temp,N;
    cin>>N;
    int *Arr=new int[N];
    for(i=0;i<N;i++) cin>>Arr[i];
 
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)//依次比较 { if(Arr[j]>Arr[j+1])//如果逆序,就交换
            {
                temp=Arr[j];
                Arr[j]=Arr[j+1];
                Arr[j+1]=temp;
            }
        }
    }
 
    for(i=0;i<N;i++)//输出
        cout<<Arr[i]<<" ";
    return 0;
}

算法分析:输入的规模完全由N决定,基本操作是比较:Arr[j]>Arr[j+1],时间复杂度C(n)=Θ(n2).

但是键的交换次数是取决于特定的输入,最差的情况是与我们要求的排序相反的,这时候键的交换次数=键的比较次数=Θ(n2).

但是在有的输入情况下,如果在对列表比较一遍之后,没有交换元素的位置,那么这个列表已经有序了,我们就可以停止该算法了。具体改进版本如下:

#include 
using namespace std;
int main()
{
    int i,j,temp,N;
    bool change=false;
    cin>>N;
    int *Arr=new int[N];
    for(i=0;i<N;i++) cin>>Arr[i];
 
    for(i=0;i<N;i++)
    {
        change=false;
        for(j=0;j<N;j++)//依次比较 { if(Arr[j]>Arr[j+1])//如果逆序,就交换
            {
                temp=Arr[j];
                Arr[j]=Arr[j+1];
                Arr[j+1]=temp;
                change=true;
            }
        }
        if(!change)//没有发生交换,则不用继续比较了。
        {
            break;
        }
    }
 
    for(i=0;i<N;i++)//输出
        cout<<Arr[i]<<" ";
    return 0;
}

但是在最差情况下,时间复杂度还是Θ(n2).

安卓手机游戏《英雄迷宫冒险》存档修改 警告 修改前务必备份存档文件夹。该游戏有自动删除存档的功能,有问题的存档会自动删除。 修改对应的游戏版本为1.5。 存档保存位置 内部存储\Android\data\com.xmmf.yxmgmx.taptap\files 该文件夹中文件如下: data.wsf:数据文件。 wsfSave0:第一个存档。 wsfSave1:第二个存档。 修改金钱的例子 先进游戏确认当前金钱数量。当前金钱是2498,然后退出游戏。 根据金钱数量计算出存档中的内容。2498的十六进制是9C2,存档中的内容在存档中搜索该数 阅读详情

相关推荐

开源WorkBuddy实战课:从零搭建AI Agent办公自动化工作台

AI Agent作为大语言模型之上的智能体,正在重塑办公效率。它通过工具调用、任务规划与长期记忆,将被动问答升级为主动执行。WorkBuddy作为图形化智能体工作台,降低了搭建门槛,让非技术人员也可配置自动化流程。本文开源整套实战资料,涵盖JDK环境配置、模型接入、日报邮件处理、表格清洗、批量文档生成等场景,并讲解自定义指令、Skills扩展与MCP协议。从基础概念到工程实践,帮助读者快速上手,构建属于自己的办公自动化助手。

weixin_29083475的博客 226

蛮力法算法复习(2)

【算法分析】蛮力法求解 TSP问题必须依次考察顶点集合的所有全排列,从中找出路径长度最短的简单回路,因此,时间下界是 Ω(n!【想法】依次考察图中所有顶点的全排列,满足(1)(vij, vij+1)∈E(1 ≤ j ≤ n-1) (2)(vin, vi1)∈E 的全排列(vi1, vi2, …【算法】蛮力法求解 TSP问题与求解哈密顿回路问题类似,不同的仅是将回路经过的边上的权值相加得到相应的路径长度,具体算法请读者自行设计。3.1 如果S[i] 等于 T[j],则继续比较 S 和 T 的下一对字符;

2301_80340360的博客 492

手把手教你用ZYNQ PS端GPIO模拟SPI驱动OLED屏幕(附Vivado工程)

本文详细介绍了如何利用ZYNQ PS端的EMIO功能,通过GPIO模拟SPI协议驱动SSD1306 OLED屏幕。从Vivado工程配置、SPI协议软件实现到SSD1306驱动开发,提供了完整的解决方案和优化技巧,适合嵌入式开发者快速上手。

weixin_30776545的博客 130

蛮力法冒泡排序

蛮力法冒泡排序 蛮力法在冒泡排序上,比较数组中相邻元素,如果它们是逆序的话,就交换它们的位置。重复多次以后,最终最大的元素就沉到数组最后一个位置,第二遍将第二大的元素沉下去。一直这样做,直到 n - 1 遍以后,该数组就排好序了。 第 i (0 <= i <= n - 2) 遍冒泡排序可以用 A[0] , A[j] , A[j], … , A[n - i - 1] | A[n - i] <= … A[n - 1]; 算法 BubbleSort(A [ n] ) //该算法用

zj的博客 3254

用Arduino+ESP32复现TDOA定位:低成本实现厘米级精度的完整教程

本文提供了一套利用Arduino和ESP32平台,结合NRF24L01+模块与GPS/PPS时间同步方案,低成本复现高精度TDOA(到达时间差)定位系统的完整教程。教程详细阐述了从硬件选型、天线阵列设计、时间同步实现到核心算法与多径抑制的实战步骤,旨在帮助开发者和硬件爱好者以可控成本实现厘米级精度的定位演示系统。

weixin_29084111的博客 162

uniapp [微信小程序] - 详解微信小程序端接入mqtt全流程及示例源码教程,uniApp微信小程序端如何接入MQTT插件并实现连接/断开+发布订阅+消息队列+离线重连等各种示例代码(开箱即用)

uniapp微信小程序接入MQTT,uniapp中使用mqtt,uniapp 微信小程序端接入mqtt示例代码教程,适用于微信小程序的MQTT插件,uniapp开发微信小程序连接mqtt,uniApp微信小程序接入MQTT协议,uniapp vue3微信小程序使用MQTT的小例子接入流程,使用uniapp开发小程序接入mqtt,如何在uniapp项目中使用mqtt,uniapp mqtt的使用示例,mqtt连接报错,如何在项目里集成mqtt,Mqtt协议,主动连接mqtt,订阅消息,实现发布,订阅和接收消息

🏆 前端领域优质创作者 2884

3.1.2蛮力法之冒泡排序

冒泡排序比较表中的相邻元素,如果它们是逆序的话,就交换它们的位置。重复多次以后,最终,最大的元素就“沉到”列表的最后一个位置。第二遍操作将第二大的元素沉下去。这样一直做,直到n-1遍以后,该列表就排好序了。第i(0<=i<=n-2)遍冒泡排序可以用下面的示意图来表示: 该算法的伪代码: ...

weixin_34303897的博客 250

架构师之HBase vs MongoDB 技术选型与场景决策实战案例

面对海量数据和高并发查询,该选 HBase 还是 MongoDB?本文为你提供完整的决策框架!从数据模型对比、架构解析、六大真实场景(电信 CDR、金融行情、广告点击流、电商商品、社交档案、内容管理)到性能、一致性、运维全面对比,助你在 PB 级时序数据和灵活查询之间做出精准选择!

肖哥弹架构博客 1102

蛮力法之冒泡排序

从数组的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序不符合要求(比如要求升序排列,而前一个元素大于后一个元素),则交换它们的位置。经过一轮比较和交换后,数组中最大(或者最小,取决于排序顺序)的元素将被“冒泡”到数组的末尾位置。接着对剩下的未排序部分重复以上操作,直到整个数组排序完成。

a17783481239的博客 645

电磁场仿真软件:COMSOL Multiphysics_(17).时域与频域分析

时域和频域分析是电磁场仿真中非常重要的两种方法,每种方法都有其独特的应用场景和优势。时域分析适用于瞬态响应和宽带信号的分析,而频域分析则适用于稳态响应和窄带信号的分析。在COMSOL Multiphysics中,通过合理设置物理场接口、材料属性、边界条件、网格划分和求解器,可以高效地进行这两种分析,并通过傅里叶变换将时域结果转换为频域结果,进一步拓展仿真应用的范围。合理的性能优化措施,如网格划分优化和并行计算,可以显著提高仿真的效率和准确性。

kkchenjj的博客 1978

【专栏必读】王道考研408操作系统+Linux系统编程万字笔记使用说明及章节导航

王道408考研操作系统)第一章计算机系统概述-第一节1、2:操作系统概念、概念和特征1:理解fork的作用prinf("还没有执行fork函数的本进程为:%d\n" , getpid());//其返回值是pid类型的 sleep(1);if(ret > 0) //父进程返回的是子进程ID {printf("我是父进程,我的id是:%d,我的孩子id是%d\n" , getpid() , ret);sleep(1);} } else if(ret == 0) //子进程fork返回值是0 {.........

快乐江湖的博客 3万+

蛮力法解决冒泡排序

蛮力法解决冒泡排序 题目内容 用蛮力法解决冒泡排序问题。其循环格式如下图所示。 输入要求 多组输入 每组数据首先输入一个整数n(0<n<100),然后输入n个待排序的整数 输出要求 每组数据输出n-1行,表示算法中n-1次扫描并交换的结果。 注意:每个数字后面均有一个空格 测试数据 输入 7 2 6 -4 3 1 0 9 2 1 2 输出 -4 2 6 0 3 1 9 -4 0 2 6 1 3 9 -4 0 1 2 6 3 9 -4 0 1 2 3 6 9 -4 0 1 2 3 6 9 -4

weixin_45656365的博客 528

UE5实现物体高亮描边效果(含UE相关源码浅析)

UE5实现物体高亮描边效果

专注GIS开发 7335

反相器版图全流程:DRC、LVS、PEX验证实战指南

在集成电路设计流程中,版图验证是连接物理设计与流片成功的关键环节。DRC(设计规则检查)确保几何图形满足工艺制造要求,LVS(版图与原理图一致性检查)保证电路连接正确,而PEX(寄生参数提取)则量化互连电阻电容对性能的影响。理解这三者的原理与协同,是模拟版图设计工程师的核心技能。反相器作为CMOS电路最基础的单元,其版图虽简单,却完整覆盖了有源区、多晶硅栅、阱接触、金属互连等全部关键层次,是练习DRC规则修复、LVS软连接排查、PEX后仿对比的理想载体。通过一个反相器项目跑通从原理图到GDSII的全流程,不

weixin_34055787的博客 436

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

用Linux做冒泡排序,用蛮力法解决冒泡排序

冒泡排序是蛮力法的另一个经典体现。算法思想:比较列表中相邻的元素,如果是逆序的话,就交换他们的位置。重复多次之后,最大的元素就排到了最后一个位置。第二遍操作将第二个元素排到了倒数第二个位置上,这样一直依次比较下去,直到 n-1 遍之后,就排好了整个列表。下面是我的代码实现:C++#includeusing namespace std;int main(){int i,j,temp,N;cin&...

weixin_42134554的博客 191

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

算法学习之蛮力法

蛮力法 蛮力法一种简单直接地解决问题的方法,常常直接基于问题的描述和所涉及的概念定义。 虽然巧妙和高效的算法很少来自于蛮力法,但我们不应该忽略它作为一种重要的算法设计策略的地位。第一,和其他某些策略不同,我们可以应用蛮力法来解决广阔领域的各种问题。第二,对于一些重要的问题来说(比如:排序、查找、矩阵乘法和字符串匹配),蛮力法可以产生一些合理的算法,它们多少具备上些实用价值,而且并不限制实例的规模。第三,如果要解决的问题实例不多,而且蛮力法可以用一种能够接受速度对实例求解,那么,设计一个更高效算法所花费的代价

weixin_44019182的博客 2149

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

算法设计之蛮力法

•蛮力法(也叫穷举法),是一种直接解决问题的方法,常常直接基于问题的描述和所涉及的概念及定义。

星空物语的专栏 2485

蛮力法——排序问题

蛮力法——排序问题 蛮力法就是暴力法,指基于问题所描述的内容直接建立算法求解。 问题:给定一个可排序的n个元素序列(数字、字符 或字符串),对它们按照非降序方式重新排列。 扫描排序 扫描排序的基本思想: 从左到右遍历序列 找到最小的数字,和序列的首个位置交换,然后将序列的首个位置移出序列 重复直到完成排序 代码实现: //用选择法对给定数组排序 //输入:一个可排序数组A[0..n-1] //输出:升序排序的数组A[0..n-1] void selectSort(int *a,int n){

qq_43513855的博客 934

算法设计与分析------蛮力法

算法设计与分析------蛮力法(c++) 一、蛮力法(穷举法 枚举法) 1、定义 ​ 蛮力法是一种简单直接地解决问题的方法,通常直接基于问题的描述和所涉及的概念定义,找出所有可能的解。 然后选择其中的一种或多种解,若该解不可行则试探下一种可能的解。 2、蛮力法使用情况 索所有的解空间:问题的解存在于规模不大的解空间中。 索所有的路径:这类问题中不同的路径对应不同的解。 直接计算:按照基于问题的描述和所涉及的概念定义,直接进行计算。往往是一些简单的题,不需要算法技巧的。 拟和仿真:按照

唯一的博客 9662

蛮力法

蛮力法:是一种简单直接地解决问题的方法,常常直接给予问题的描述和所涉及的概念定义。 1.       选择排序 算法: SelectionSort(Array a) //该算法用选择排序对给定数组排序 //输入:一个可排序数组 A[0,1,….n-1] //输出:一个已排序数组 A[0,1,….n-1](升序) for  i            min

zk_sima的专栏 1519

【数据结构与算法分析】介绍蛮力法以及相关程序案例

本文旨在介绍蛮力算法,通过排序、最近对问题、凸包问题等案例讲解蛮力算法并且给出相应详细程序。

黑心萝卜三条杠的博客 1466

介绍蛮力法以及相关程序案例

当以点(1,1)为凸包多边形边的一点时,将该点依次连接其他任意点,例如:连接点(2,1),通过点到直线的距离公式,可以算出任意点到该直线都为正数,因此,可以作为凸多边形的一边;而连接点(5,3)时,由于点散落在直线两侧,使用距离公式,可以算出部分点到直线距离为正数,而剩余点到直线的距离为负数,因此,该边不可作为凸多边形的一边。求出二维平面中点 (1,1),(2,1)、(4,1)、(2,2)、(3,2)、(4,2)、(2,3)、(4,3)、(5,3)、(3,4) 所构成的最小凸包。否则就继续找其他的直线。

m0_53958256的博客 337

蛮力法----考试算法

蛮力法选择排序冒泡排序最大值连续子序问题背包问题 选择排序 #include <iostream> /** *蛮力法 *选择排序 **/ using namespace std; void Swap(int& a,int& b) { int t; t=a; a=b; b=t; } //选择排序 void SelectSort(int*element,int n) { int min; // 最小值 int min_location;//最小值所在的位置

胡众斌的博客 419
上一篇: 算法——跳跃搜索
下一篇: 算法的分析思路
linuxprobe2017
博客等级 码龄10年 123粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值