当前位置: 首页 > news >正文

基础算法(4):排序(4)冒泡排序

1.冒泡排序(BubbleSort)实现

     算法步骤:比较相邻的元素。如果第一个比第二个大,就交换。

                       对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。

                       这步做完后,最后的元素会是最大的数。

                       针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

     代码实现:

void BubbleSort(int arr[],int len)
{for(int i=0;i<len-1;i++)//外循环是遍历每个元素,每次都放置好一个元素{for(int j=0;j<len;j++)//内循环是比较相邻的两个元素,把大的元素交换到后面{if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}
}

 2.冒泡排序的时间复杂度

     最优的情况是已经排好序了,那么就不用交换元素,时间开销为:[n(n-1)]/2;时间复杂度为O(n^2)。

     最差的情况是元素刚开始也拍好序了,但是是逆序,这样每一次排序都要交换两个元素,时间开销为:[3n(n-1)]/2;时间复杂度为O(n^2)。

3.leetcode题目

最后一块石头的重量

void bubbleSort(int* nums,int n)
{for(int i=0;i<n-1;i++){for(int j=0;j<n-1-i;j++){if(nums[j]>nums[j+1]){int temp=nums[j];nums[j]=nums[j+1];nums[j+1]=temp;}}}
}
int lastStoneWeight(int* stones, int stonesSize) {while(stonesSize>1){bubbleSort(stones,stonesSize);stones[stonesSize-2]=stones[stonesSize-1]-stones[stonesSize-2];stonesSize--;}return stones[0];
}
http://www.lryc.cn/news/261475.html

相关文章:

  • 鸿蒙开发之网络请求
  • PrimDiffusion:3D 人类生成的体积基元扩散模型NeurIPS 2023
  • 时序预测 | Python实现LSTM-Attention-XGBoost组合模型电力需求预测
  • 【网络安全技术】电子邮件安全PGP,SMIME
  • CSS学习笔记整理
  • SpringData自定义操作
  • 【Java JVM】运行时数据区
  • k8s中pod监控数据在grafana中展示
  • 人机协同之间也有混馈机制
  • 微服务网关Gateway
  • flume:Ncat: Connection refused.
  • selenium 与 chromedriver安装
  • 【Unity】2D项目中如何让Camera展示的大小正好等于某一个Game Object的大小
  • last block incomplete in decryption
  • Guardrails for Amazon Bedrock 基于具体使用案例与负责任 AI 政策实现定制式安全保障(预览版)
  • flutter学习-day12-可滚动组件和监听
  • LeetCode:967连续查相同的数字(DFS)
  • 深入剖析NPM: Node包管理器的介绍和使用指南
  • AI视频-stable-video-diffusio介绍
  • day01-报表技术POI
  • 如何预防最新的.locked、.locked1勒索病毒感染您的计算机?
  • 实现两张图片的接缝线拼接
  • 基于JNI 实现 嵌套 List 类型参数解析
  • 探索灵活性与可维护性的利器:策略(Strategy)模式详解
  • 压缩包文件暴力破解 -Server2005(解析)
  • mars3d加载arcgis发布的服务,⽀持4523坐标
  • 『K8S 入门』二:深入 Pod
  • 十七、如何将MapReduce程序提交到YARN运行
  • 华为云CodeArts Deploy常见问答汇总
  • 前后端交互—开发一个完整的服务器