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

八大排序算法

一.冒泡排序
1.原理
在这里插入图片描述
2.代码

void bubbleSort(vector<int> &arr)
{int size = arr.size();bool swapped;//外层,遍历的趟数for (int i = 0; i < size - 1; i++){swapped = false;//内层,比较for (int j = 0; j < size - 1 - i; j++){if (arr[j] < arr[j + 1]){swap(arr[j], arr[j + 1]);swapped = true;}}if (!swapped){break;}}
}
#include "Sort_8.h"
#include<time.h>
int main()
{srand(time(NULL));vector<int>data;cout << "原始的排序数据: " << endl;for (int i = 0; i < 10; i++){data.push_back(rand() % 100);cout << data.back() << endl;}cout << endl;bubbleSort(data);cout << "排序之后的数据: " << endl;for (auto item : data){cout << item << " ";}cout << endl;
}

二.选择排序
1.原理
在这里插入图片描述
2.代码

void selectionSort(vector<int>& arr)
{int size = arr.size();int minIdx;for (int i = 0; i < size - 1; i++){minIdx = i;for (int j = i + 1; j < size; j++){if (arr[j] < arr[minIdx]) {minIdx = j;}}if (minIdx != i){swap(arr[i], arr[minIdx]);}}
}

三.插入排序
1.原理
在这里插入图片描述
2.代码

void insertionSort(vector<int>& arr)
{int size = arr.size();if (size <= 1) {return;}for (int i = 1; i < size; i++){int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key){arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}
}
http://www.xdnf.cn/news/1497.html

相关文章:

  • git pull的时候报错
  • 主流开源 LLM 应用开发平台详解
  • 记录下递归
  • 0.(新专栏目录)数据分类的艺术:从理论到实践的全面指南
  • 结构型模式:适配器模式
  • java后端开发day35--集合进阶(四)--双列集合:MapHashMapTreeMap
  • leetcode 二分查找应用
  • Linux/AndroidOS中进程间的通信线程间的同步 - IPC方式简介
  • Podman Desktop:现代轻量容器管理利器(Podman与Docker)
  • 基于stm32的智能门锁系统
  • ecovadis评估注意事项?ecovadis评估过程需要多长时间
  • gem5-gpu教程05 内存建模
  • 46. 全排列
  • Prisma JSON存储扩展性
  • 1.6软考系统架构设计师:架构师的角色与能力要求 - 练习题附答案及超详细解析
  • OpenCV图像轮廓示例
  • 如何创建GitLab 合并请求?
  • 【每日八股】复习 MySQL Day2:索引
  • 【Java面试笔记:基础】10.如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全?
  • 前缀和相似题共赏
  • 文件自动备份
  • 共建安全可控大模型AI底座,助力国产化升级——麒麟信安与新智惠想达成战略合作
  • 2025.04.23华为机考第一题-100分
  • Redis高频核心面试题
  • go中redis使用的简单介绍
  • 利用HandlerMethodArgumentResolver和注解解析封装用户信息和Http参数
  • Postman设置了Cookies但是请求不携带Cookie
  • Java | 深拷贝与浅拷贝工具类解析和自定义实现
  • 今日行情明日机会——20250423
  • 协程gevent案例