C++实现快速排序法
快速排序法,要点在于选取一个基准值,通过一次比较将大于该基准值的数放到该基准值的一侧,小于该基准值的数放到该基准值的另一侧,再分别对两侧的子序列重复上述过程,以此完成排序。本节Jungle图文并茂举例介绍快速排序法。
对于初始序列:{12,45,90,1,34,87,-3,822,23,222},快速排序法过程如下:
1.快速排序过程讲解
2.代码实现
void quickSort(int arr[],int startNum,int endNum)
{if(startNum>=endNum)return;// k为初始基准值int i=startNum,j=endNum,k=arr[i];while(i<j){// 从后往前找小于k的第一个值while(i<j && arr[j]>k)j--;if(i<j){arr[i] = arr[j];i++;}// 从前往后找大于k的第一个值while(i<j && arr[i]<k)i++;if(i<j){arr[j] = arr[i];j--;}}arr[i] = k;quickSort(arr,startNum,i-1);quickSort(arr,i+1,endNum);
}int _tmain(int argc, _TCHAR* argv[])
{int a[10] = {12,45,90,1,34,87,-3,822,23,222};cout<<"原始数列:\n";for(int i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;cout<<"快速排序:\n";int temp[11]={0};quickSort(a,0,9);for(int i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;system("pause");return 0;
}
运行结果:
欢迎关注知乎专栏:Jungle是一个用Qt的工业Robot
欢迎关注Jungle的微信公众号:Jungle笔记
C++实现快速排序法相关推荐
- 1.16 快速排序法(Quicksort)
快速排序(Quicksort)是对冒泡排序的一种改进,是一种排序执行效率很高的排序算法. 快速排序的基本思想是:通过一趟排序,将要排序的数据分隔成独立的两部分,其中一部分的所有数据比另外一部分的所有数 ...
- 探索初级算法学习笔记-快速排序法
快速排序法学习笔记 #include<stdio.h>void swap(int *a,int *b) {int t;t=*a;*a=*b;*b=t; }void quickSort(in ...
- php四种基础算法:冒泡,选择,插入和快速排序法
许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要 ...
- 算法之旅 | 快速排序法
HTML5学堂-码匠:前几期"算法之旅"跟大家分享了冒泡排序法和选择排序法,它们都属于时间复杂度为O(n^2)的"慢"排序.今天跟大家分享多种排序算法里使用较广 ...
- oracle快速排序法,经典算法系列之快速排序算法
快速排序(Quicksort)是对冒泡排序的一种改进.由C. A. R. Hoare在1962年提出.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但 ...
- 【JavaScript算法】---快速排序法
一.快速排序法概念 我们将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边.比较完毕后再次取中间值,再次比 ...
- 快速排序法实战入门(推荐)
//主要思路:先选第一个数组的值记为基准数 //从最后一个素组j的值开始与基准数比较,倒推(j--) //当找到比基准数小的数值时,停止比较, //从第一个数组i的值开始与基 ...
- c语言排快速排序过程,C语言中快速排序法怎么排
快速排序法的排法:首先每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边:然后将大于等于基准点的数全部放到基准点的右边:最后在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之 ...
- 【重温基础算法】内部排序之快速排序法
内部排序之快速排序法 文章目录 内部排序之快速排序法 主要思想 过程演示 JAVA代码 算法分析 时间复杂度分析 最好时间复杂度 最坏时间复杂度 平均时间复杂度 空间复杂度 对冒泡排序的一种优化 主要 ...
- 最常用的排序---快速排序法
最常用的排序-快速排序法 桶排序浪费空间,冒泡排序虽然解决了空间问题却在算法的执行效率上牺牲了很多,因此我们的快速排序法就诞生了,是不是听这个名字就很高档呢? 假设现在需要对"6,1,2,7 ...
最新文章
- 项目实践 | 行人跟踪与摔倒检测报警
- Chapter 7. 对话框控件
- MySQL 数据库的备份和恢复
- 解决python多版本环境下pip报错Fatal error in launcher: Unable to create process using问题
- 用C语言编写的简历,一份用C语言写的简历
- Cassandra集群配置
- 谷歌浏览器input中的text 和 button 水平对齐的问题
- 富文本编辑器-Ueditor传值
- 刘莹等:干旱对灌溉和雨养农田生态系统生产力的影响对比分析 【关于底图的考虑】
- 公式法求主合取范式和主析取范式的一种思路
- 中国色 - 中国传统色(zhongguose.com) 页面模仿
- 【电脑系统】c盘误操作删除EFI引导分区后,开机一直checking media
- 浏览器的两种设置方法:本地的设置方法与静默设置
- php商城积分兑换商品功能,帮助中心-积分商城的功能详解
- mc服务器常用指令_我的世界服务器指令大全 最新服务器指令汇总
- 健康地奋斗着——程序员自己的养生书
- 定语从句和同位语重句的区别
- android html 文件怎么打开,Android可以用Html查看器打开txt文件
- MFC Group Box 组合框的简单使用 笔记
- swift开发之pop动画