c++ 排序 冒泡 插入 选择 快速
时间:2020-01-09
本文章向大家介绍c++ 排序 冒泡 插入 选择 快速,主要包括c++ 排序 冒泡 插入 选择 快速使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
//冒泡 #include <iostream> using namespace std; void bubbleSort(int* list,int index) { for(int i=index;i>0;i--) //index 最大的那个索引 { for(int j=0;j<i;j++) { if(list[j]>list[j+1]) { int temp; temp=list[j]; list[j]=list[j+1]; list[j+1]=temp; } } } } void main() { int list[9]={3,4,1,5,2,8,7,9,6}; for(int i=0;i<9;i++) cout<<list[i]<<" | "; cout<<endl; bubbleSort(list,8);//index:= 9-1 for(int i=0;i<9;i++) cout<<list[i]<<" | "; } //插入排序法 #include <iostream> using namespace std; void insertSort(int* list,int index) { //在排序之前我们需要搞清一个思路,新插入一个数据的时候,排序过后的数组都是 //从小到大排列好的,所以我们需要从后往前查找,直到找到比我们要插入的数字还小的 //值。这个时候我们需要一个变量j作为标识 //从1开始 for(int i=1;i<=index;i++) //index 最大的那个索引 { int insertNode=list[i]; int j; for(j=i-1;j>=0;j--) { if(insertNode<list[j]) list[j+1]=list[j]; else break; //因为前面的已经排序好,所以找到位置后 就可以退出了 } list[j+1]=insertNode; } } void main() { int list[9]={3,4,1,5,2,8,7,9,6}; for(int i=0;i<9;i++) cout<<list[i]<<" | "; cout<<endl; insertSort(list,8);//index:= 9-1 for(int i=0;i<9;i++) cout<<list[i]<<" | "; } //选择排序法 #include <iostream> using namespace std; void selectSort(int* list,int index) { for(int i=0;i<=index;i++) //index 最大的那个索引 { int minValue=list[i]; int minIndex=i; for(int j=i;j<=index;j++) { if(minValue>list[j]) { minValue=list[j]; minIndex=j; } } int temp; temp=list[i]; list[i]=list[minIndex]; list[minIndex]=temp; } } void main() { int list[9]={3,4,1,5,2,8,7,9,6}; for(int i=0;i<9;i++) cout<<list[i]<<" | "; cout<<endl; selectSort(list,8);//index:= 9-1 for(int i=0;i<9;i++) cout<<list[i]<<" | "; } //快速排序法 #include <iostream> using namespace std; int Partition(int a[], int low, int high) { int x = a[high];//将输入数组的最后一个数作为主元,用它来对数组进行划分 int i = low - 1;//i是最后一个小于主元的数的下标 for (int j = low; j < high; j++)//遍历下标由low到high-1的数 { if (a[j] < x)//如果数小于主元的话就将i向前挪动一个位置,并且交换j和i所分别指向的数 { int temp; i++; temp = a[i]; a[i] = a[j]; a[j] = temp; } } //经历上面的循环之后下标为从low到i(包括i)的数就均为小于x的数了,现在将主元和i+1位置上面的数进行交换 a[high] = a[i + 1]; a[i + 1] = x; return i + 1; } void QuickSort(int a[], int low, int high) { if (low < high) { int q = Partition(a, low, high); QuickSort(a, low, q - 1); QuickSort(a, q + 1, high); } } void main(){ int arry[] = {3,4,1,5,2,8,7,9,6}; for (int i = 0; i < 9; i++) { cout << arry[i] <<" | "; } cout<<endl; QuickSort(arry, 0, 8); for (int i = 0; i < 9; i++) { cout << arry[i] <<" | "; } }
原文地址:https://www.cnblogs.com/tobetterlife/p/12170980.html
- Android Native 开发之 NewString 与 NewStringUtf 解析
- OpenJDK8 Windows编译
- Spring Boot 开发应用热部署
- Python之多线程爬虫抓取网页图片
- Mycat适配oracle,各种坑
- 看完这个,不用写代码就能实现深度学习了
- Mycat -- linux安装与配置笔记
- 挖洞经验 | 记一次曲折的Getshell过程
- Java泛型一览笔录
- Java多态性的“飘渺之旅”
- Java动态代理一览笔录
- activiti-explorer部署笔记
- 没有准考证号我是如何暴力查询英语六级成绩的
- asp.net web api 2.2 基础框架(带例子)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java8实战——通过行为参数化传递代码 顶
- Angular component的一个例子
- 初识mybatis中的缓存
- 【卷积神经网络结构专题】ResNet及其变体的结构梳理、有效性分析
- Steganographer:能帮助在图片中隐藏数据的Python隐写工具
- 内网横向移动:Kerberos认证与(哈希)票据传递攻击
- 诺禾致源linux下数据下载
- 技巧 | OpenCV中如何绘制与填充多边形
- Swift guard
- PyTorch实现TPU版本CNN模型
- 使用NLP检测和对抗AI假新闻
- kallisto --genomebam报错解决(GTF文件的坑)
- linux查找文件
- TCP 协议面试灵魂 12 问,问到你怀疑人生!
- 方差分析简介(结合COVID-19案例)