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

数据结构--七大排序算法(更新ing)

        下面算法编写的均是按照由小到大排序版本


选择排序

思想:

        每次遍历待排序元素的最大下标,与待排序元素中最后一个元素交换位置(此时需要设置一个临时变量来存放下标)

        时间复杂度--O(n^2)

        空间复杂度--O(1)

        稳定性--不稳定

代码实现

#include<iostream>
using namespace std;
const int N = 1e2 + 10;
int num[N];
int n;void select_sort()
{for (int i = 1; i < n; i++)//控制找最大值的次数{int index = 1;//存待排序元素的最小元素的下标for (int j = 1; j <= n - i; j++){if (num[index] < num[j])index = j;}swap(num[index],num[n-i]);}
}
int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> num[i];}select_sort();for (int i = 1; i <= n; i++) cout << num[i] << " " << endl;
}

冒泡排序 

思想:

        相邻两个元素比较,前一个比后一个大则交换

(每遍历一次都会冒出最大值 每次遍历最后一个一定是最大的)

        时间复杂度--O(n^2)  (逆序时达到O(n^2))

        空间复杂度O(--1)

        稳定性--稳定

优化:

        当整个数组遍历过程中没有发生交换,说明待排序数组已经有序,直接结束排序过程(bool类型变量做标记)

代码实现

#include <iostream>
using namespace std;
const int N = 1e2 + 10;
int num[N];
int n;void bubble_sort()
{for (int i = 1; i < n; i++){bool flag = false;for (int j = 1; j <= n - i; j++){if (num[j] > num[j + 1]){swap(num[j], num[j + 1]);flag = true;}}if (!flag) break;}
}int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> num[i];}bubble_sort();for (int i = 1; i <= n; i++){cout << num[i] << " ";}return 0;
}

http://www.lryc.cn/news/319488.html

相关文章:

  • 202203青少年软件编程(图形化) 等级考试试卷(二级)
  • 【智能硬件、大模型、LLM 智能音箱】Emo:基于树莓派 4B DIY 能笑会动的桌面机器人
  • rust学习笔记(1-7)
  • vscode jupyter 如何关闭声音
  • plt保存PDF矢量文件中嵌入可编辑字体(可illustrator编辑)
  • Nacos与Eureka的使用与区别
  • 利用express从0到1搭建后端服务
  • 如何在Ubuntu中查看编辑lvgl的demo和examples?
  • 深入了解 大语言模型(LLM)微调方法
  • C语言之快速排序
  • 获取扇区航班数
  • ​【已解决】npm install​卡主不动的情况
  • Golang协程详解
  • git:码云仓库提交以及Spring项目创建
  • 【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突
  • 【机器学习-02】矩阵基础运算---numpy操作
  • 《A Second-Order PHD Filter With Mean and Variance in Target Number》学习心得
  • React 实现下拉刷新效果
  • 使用endnote插入引用文献导致word英文和数字变成符号的解决方案
  • npm下载慢换国内镜像地址
  • 开源绘图工具 PlantUML 入门教程(常用于画类图、用例图、时序图等)
  • Ubuntu20下C/C++编程开启TCP KeepAlive
  • 前世档案(不用二叉树语法秒杀版c++)
  • Java基础 - 9 - 集合进阶(二)
  • javaEE——线程的等待和结束
  • sqlplus设置提示符
  • macbook删除软件只需几次点击即可彻底完成?macbook删除软件没有叉 苹果笔记本MacBook电脑怎么卸载软件? cleanmymac x怎么卸载
  • Unity WebGL ios 跳转URL
  • 机器学习模型—XGBoost
  • 在Swift中集成Socket.IO进行实时通信