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

排序C++代码(已更:快速排序,归并排序)

一、快速排序

#include<iostream>
using namespace std;//设定三个数组,判断排序算法代码的正确性
int a[100]={3,4,2,6,9,7,1,0,1,2,3,3,5,6,7,8,3,4,5};
int b[100]={1,5,3,4};
int c[100]={7,8,9,1,2,3};void quickSort(int* num,int l,int r){if(l>=r) return; //退出条件int temp=num[l]; //num[l]为pivotint i=l,j=r;//找到左边第一个大于temp的,和右边第一个小于temp的元素,交换while(i!=j){while(i<j&&num[j]>=temp) j--;while(i<j&&num[i]<=temp) i++;if(i<j) swap(num[i],num[j]);}swap(num[i],num[l]);//将temp换到中间,此时左边都是小于temp的元素,右边都是大于temp的元素quickSort(num,l,i-1); //对左边排序quickSort(num,i+1,r); //对右边排序
}int main(){quickSort(a,0,18);quickSort(b,0,3);quickSort(c,0,5);int i;cout<<"a: ";for(i=0;i<19;i++){cout<<a[i]<<" ";}cout<<endl<<"b: ";for(i=0;i<4;i++){cout<<b[i]<<" ";}cout<<endl<<"c: ";for(i=0;i<6;i++){cout<<c[i]<<" ";}return 0;
}

运行结果:

a: 0 1 1 2 2 3 3 3 3 4 4 5 5 6 6 7 7 8 9
b: 1 3 4 5
c: 1 2 3 7 8 9

二、归并排序

#include<iostream>
using namespace std;int n;
int num[100005];void merge(int* a,int l,int mid,int r){int temp[n];int i=l,j=mid+1;int cur=l;while(i<=mid&&j<=r){if(a[i]<a[j]) temp[cur++]=a[i++];else temp[cur++]=a[j++];}while(i<=mid) temp[cur++]=a[i++];while(j<=r) temp[cur++]=a[j++];for(i=l;i<=r;i++){a[i]=temp[i];}
}void mergeSort(int* a,int l,int r){if(l==r) return;int mid=(l+r)/2;mergeSort(a,l,mid);mergeSort(a,mid+1,r);//合并merge(a,l,mid,r);
}int main(){cin>>n;int i;for(i=0;i<n;i++){cin>>num[i];}mergeSort(num,0,n-1);for(i=0;i<n;i++){cout<<num[i]<<" ";}return 0;
}

输入:

5

2 6 9 1 5

输出:

1 2 5 6 9

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

相关文章:

  • CentOS 7.9安装Tesla M4驱动、CUDA和cuDNN
  • Java设计模式——策略
  • 线性代数的本质 1 向量
  • 基于JAVA的贫困地区人口信息管理系统 开源项目
  • 【后端高频面试题--Mybatis篇】
  • 【笔记】Helm-5 Chart模板指南-12 .helmignore文件
  • 【MySQL】表的增删改查(基础)
  • Android矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置,Kotlin
  • C语言:表达式求值
  • GO 的 Web 开发系列(五)—— 使用 Swagger 生成一份好看的接口文档
  • 【极数系列】Flink集成KafkaSink 实时输出数据(11)
  • 我为什么选择Xamarin开发ios app安卓app
  • 安全基础~通用漏洞4
  • 2024/2/12 图的基础知识 2
  • 无人机飞行原理,多旋翼无人机飞行原理详解
  • docker本地目录挂载
  • 使用C++从零开始,自己写一个MiniWeb
  • Android Graphics 图像显示系统 - 开篇
  • 机器学习在各个行业的应用介绍
  • 【生产实测有效】Windows命令行查看激活状态脚本
  • 简单的Udp服务器
  • 【Linux进程间通信】用管道实现简单的进程池、命名管道
  • Linux操作系统基础(九):Linux用户与权限
  • 蓝桥杯——第 5 场 小白入门赛(c++详解!!!)
  • Codeforces Round 303 (Div. 2)C. Kefa and Park(DFS、实现)
  • 797. 差分
  • 2024.2.5 vscode连不上虚拟机,始终waiting for server log
  • CSS基础---新手入门级详解
  • Python中Pymysql库的常见用法和代码示例
  • 使用 WPF + Chrome 内核实现高稳定性的在线客服系统复合应用程序