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

插入排序和冒泡排序

文章目录

  • 1、插入排序
  • 2、冒泡排序

1、插入排序

  • 流程如下:

1)从第一个元素开始遍历,该元素可以认为已经被排序,记录已排序序列的结尾元素为end = i
2)取下一个元素temp = arr[end + 1],从已排序的元素序列从后往前遍历
3)如果遍历的元素arr[end]> temp,则将该元素移到下一位,即arr[end+1] = arr[end],同时end–
4)如果遍历的元素arr[end]<= temp,则跳出循环
5)将temp插入到该元素的后面,即arr[end + 1] = temp

  • C++代码为:
#include <vector>
using namespace std;void insert_sort(vector<int>& arr){int n = arr.size();for (int i = 1; i < n; i++){end = i - 1;temp = arr[i];while (end >= 0 && arr[end] > temp){arr[end] = arr[end + 1];end--;}arr[end + 1] = temp;}
}
  • Python:
def insertion_sort(arr):for i in range(1, len(arr)):temp = arr[i]  # 当前待插入的元素end = i - 1  # 已排序部分的最后一个元素的索引位置while end >= 0 and arr[end] > temp:arr[end + 1] = arr[end]  # 把比当前元素大的元素往后移动end -= 1arr[end + 1] = temp  # 插入当前元素到正确的位置return arr

2、冒泡排序

  • 流程如下:

1)从第一个元素开始,比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2)那么最后的元素应该会是最大的数。
3)持续每次对越来越少的元素重复上面的步骤,重复n = arr.size()次,直到没有任何一对数字需要比较。

  • C++:
#include <vector>
using namespace std;void bubble_sort(vector<int>& arr){int n = arr.size();for (int i = 0; i < n; i++){for (int j = 0; j < n - i -1; j++){if (arr[j] > arr[j+1]){int temp = arr[j+1];arr[j+1] = arr[j];arr[j] = temp;}}}
}
  • Python:
def bubble_sort(arr):n = len(arr)for i in range(n-1):for j in range(n-i-1):if arr[j] > arr[j+1]:temp = arr[j + 1]arr[j + 1] = arr[j]arr[j] = temp
http://www.lryc.cn/news/156757.html

相关文章:

  • go Session的实现(一)
  • QTableView合并单元格
  • 如何使用SpringCloud Eureka 创建单机Eureka Server-注册中心
  • QT连接OpenCV库实现人脸识别
  • 基于SSM+Vue的网上花店系统
  • 两种解法解决 LeetCode 27. 移除元素【C++】
  • Vue + Element UI 前端篇(七):功能组件封装
  • QT QToolBox控件使用详解
  • 数学建模--主成分分析法(PCA)的Python实现(
  • 【数据结构篇】线性表2 —— 栈和队列
  • 万物互联:软件与硬件的协同之道
  • ping: www.baidu.com: Name or service not known 写了DNS还是不行
  • C++中的decltype、std::declval 和 std::decay_t傻傻分不清楚
  • 什么是Ubuntu LTS?与常规版本的区别
  • 如何写一个可以找到工作的简历不至于太烂
  • el-select 使用
  • 思维导图怎么变成ppt?4个思维导图一键生成ppt的方法
  • 3D点云处理:点云投影为2D图像 调平点云(附源码)
  • mysql 查询优化 、索引失效
  • 支付宝pc支付(springboot版),简单配置即可实现支付
  • 【Redis专题】Redis持久化、主从与哨兵架构详解
  • 【vue2第十三章】自定义指令 自定义v-loading指令
  • 数据结构--6.3查找算法(静态、动态)(插值查找)
  • Spring Boot日志基础使用 设置日志级别
  • Playwright for Python:断言
  • websocket--技术文档--spring后台+vue基本使用
  • day01-ES6新特性以及ReactJS入门
  • MySQL5.7慢查询实践
  • MySQL数据库的增删改查(进阶)
  • 韶音骨传导耳机好不好用,韶音的骨传导耳机怎么样