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

图解三傻排序 选择排序、冒泡排序、插入排序

(1)选择排序

// 交换
void swap(int arr[], int i, int j) {int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;
}// 选择排序 
void selectionSort(int arr[],int len) {if (len < 2) return;for (int minIndex, i = 0; i < len - 1; i++) {minIndex = i;for (int j = i + 1; j < len; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}swap(arr, i, minIndex);// 交换}printf("选择排序:");print(arr, len);// 打印
}

 (2)冒泡排序

// 交换
void swap(int arr[], int i, int j) {int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;
}
// 冒泡排序 
void bubbleSort(int arr[], int len) {if (len < 2) return;for (int end = len - 1; end > 0; end--) {for (int i = 0; i < end; i++) {if (arr[i] > arr[i + 1]) {swap(arr, i, i + 1);}}}printf("冒泡排序:");print(arr, len);// 打印
}	

 (3)插入排序

// 交换
void swap(int arr[], int i, int j) {int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;
}
// 插入排序
void insertionSort(int arr[], int len) {if (len < 2) return;for (int i = 1; i < len; i++) {for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {swap(arr, j, j + 1);}}printf("插入排序:");print(arr, len);// 打印
}

 C++完整代码:

// 选择、冒泡、插入排序
/*选择排序一句话:i~n-1范围上,找到最小值并放在i位置,然后 i+1 ~ n-1范围上继续冒泡排序一句话:0~i范围上,相邻位置较大的数滚下去,最大值最终来到i位置,然后0~i-1范围上继续插入排序一句话:0~i范围上已经有序,新来的数从右到左滑到不再小的位置插入,然后继续
*/
#include <iostream>
using namespace std;
void print(int arr[],int len) {for (int i = 0; i < len; i++) {printf("%d\t", arr[i]);}printf("\n");
}// 交换
void swap(int arr[], int i, int j) {int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;
}// 选择排序 
void selectionSort(int arr[],int len) {if (len < 2) return;for (int minIndex, i = 0; i < len - 1; i++) {minIndex = i;for (int j = i + 1; j < len; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}swap(arr, i, minIndex);// 交换}printf("选择排序:");print(arr, len);// 打印
}/*0~n-1 0~n-20~n-3...0~end--
*/
// 冒泡排序 
void bubbleSort(int arr[], int len) {if (len < 2) return;for (int end = len - 1; end > 0; end--) {for (int i = 0; i < end; i++) {if (arr[i] > arr[i + 1]) {swap(arr, i, i + 1);}}}printf("冒泡排序:");print(arr, len);// 打印
}	/*0~00~10~20~3...0~n-1
*/
// 插入排序
void insertionSort(int arr[], int len) {if (len < 2) return;for (int i = 1; i < len; i++) {for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {swap(arr, j, j + 1);}}printf("插入排序:");print(arr, len);// 打印
}int main() {int arr[] = { 1,4,2,6,3,7,0,5};int len = sizeof(arr) / sizeof(arr[0]);//selectionSort(arr,len);//bubbleSort(arr, len);insertionSort(arr, len);system("pause");return 0;
}

相关文章:

  • 微服务架构——笔记(3)Eureka
  • 293_C++_告警类
  • Visual Studio 2017附加依赖项
  • 商城系统分布式下单
  • 【Spring Boot 源码学习】JedisConnectionConfiguration 详解
  • 软磁直流测试系统电参量指标
  • 【论文阅读】Generating Radiology Reports via Memory-driven Transformer (EMNLP 2020)
  • 基于Skywalking的全链路跟踪实现
  • 电机应用-直流有刷电机
  • 1212. 地宫取宝
  • 【解决问题】---- 解决 avue-crud 表格勾选数据翻页后界面保持选中
  • 使用PE U盘在VM Workstation中安装系统
  • 二十、泛型(4)
  • 【PTE-day06 文件上传】
  • Spring boot集成sentinel限流服务
  • Github访问慢解决办法
  • iOS | NSProxy
  • js对象的深浅拷贝
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Python学习之路13-记分
  • ucore操作系统实验笔记 - 重新理解中断
  • Vue小说阅读器(仿追书神器)
  • windows下如何用phpstorm同步测试服务器
  • 百度地图API标注+时间轴组件
  • 基于 Babel 的 npm 包最小化设置
  • 力扣(LeetCode)965
  • 那些被忽略的 JavaScript 数组方法细节
  • 如何编写一个可升级的智能合约
  • 通信类
  • 云大使推广中的常见热门问题
  • ionic入门之数据绑定显示-1
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #162 (Div. 2)
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)菜鸟学数据库(三)——存储过程
  • (转)四层和七层负载均衡的区别
  • ***通过什么方式***网吧
  • *1 计算机基础和操作系统基础及几大协议
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .libPaths()设置包加载目录
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • @html.ActionLink的几种参数格式
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [<事务专题>]
  • [BZOJ 1040] 骑士