排序——快速排序

简介: 排序——快速排序

645d5da8b27c40e0a0b68bd6b329eb5c.png

基本思想

image.png

步骤

image.png

算法代码

#include<iostream>usingnamespacestd;
//一趟划分,将 nums 序列划分为两个子序列,左子序列比轴心小,右子序列比轴心大 intPartition(intnums[],intlow,inthigh){         
intpivot=nums[low];                          //将当前序列的第一个元素设为轴心,对标进行划分 while(low<high){                                //循环跳出条件 while(low<high&&nums[high]>=pivot) high--;  
nums[low]=nums[high];                       //将右边比轴心小的元素移到左边 while(low<high&&nums[low]<=pivot) low++;
nums[high]=nums[low];                       //将左边比轴心大的元素移到右边     }
nums[low]=pivot;                                //轴心元素放到的最终位置 returnlow;                                     //返回存放轴心的最终位置 }
//快速排序 intQuickSort(intnums[],intlow,inthigh){
if(low<high){                                   //递归跳出条件 intpivotIndex=Partition(nums,low,high);  //对序列进行划分操作 QuickSort(nums,low,pivotIndex-1);               //对左子序列再次进行划分 QuickSort(nums,pivotIndex+1,high);              //对右子序列再次进行划分     }
}
//打印数组 voidprintNum(intnumbers[],intn){
for(inti=0;i<n;i++){
cout<<numbers[i]<<" ";
    }
}
intmain()
{
intnumbers[10]={3,44,38,5,47,15,36,26,27,2};
intn=sizeof(numbers)/sizeof(numbers[0]);   //数组长度 QuickSort(numbers,0,9);     //调用 InsertSort 函数进行插入排序 printNum(numbers,n);        //打印数组 return0;
}
注:每一趟Partition( )操作后,表中的元素都会被轴心一分为二。在快速排序算法中,并不产生有序子序列,但每趟排序后会将轴心元素放到其最终的位置上。快速排序的关键就在于pivot在排序之前就拿出来,空一个位置,然后左右指针交替扫描,遇到不符合情况的就把不符合的数字放到空位置,直至左右指针重合,在排序过程中pivot是一直在序列之外的,在一趟排序之后再把pivot放回唯一的空位置就行

image.png


image.png

目录
相关文章
|
存储 算法 搜索推荐
排序篇(四)----归并排序
排序篇(四)----归并排序
60 0
|
6月前
|
算法 搜索推荐
排序——归并排序
排序——归并排序
43 0
|
6月前
|
搜索推荐 算法 Shell
排序——插入排序
排序——插入排序
43 0
|
6月前
|
算法 搜索推荐
排序——选择排序
排序——选择排序
63 0
|
存储 搜索推荐 测试技术
排序篇(一)----插入排序
排序篇(一)----插入排序
46 0
|
算法 搜索推荐 索引
排序篇(二)----选择排序
排序篇(二)----选择排序
34 0
|
存储 算法 搜索推荐
排序(4)——归并排序
今天给大家带来比较排序的最后一种,归并排序,这个排序,需要我们对递归,循环控制要有着较强的理解,我相信大家通过前面和小编的一起学习,这里肯定也是得心应手。
96 0
|
存储 搜索推荐 测试技术
排序(1)之插入排序
从今天小编就开始给大家介绍排序的内容,对于排序内容我们一共分,插入,选择,交换,归并这几个大类,那么今天小编给大家带来的就是插入排序
98 0
|
搜索推荐
排序(2)之选择排序
继插入排序后,今天小编就给大家另一个模块,选择排序的学习,那么话不多说,我们直接进入正题。
116 0
|
索引
掌握常见的几种排序-选择排序
选择排序是一种简单的排序,时间复杂度是O(n^2),在未排序的数组中找到最小的那个数字,然后将其放到起始位置,从剩下未排序的数据中继续寻找最小的元素,将其放到已排序的末尾,以此类推,直到所有元素排序结束为止。
118 0
掌握常见的几种排序-选择排序