首页 > 编程知识 正文

数据结构快速排序图解,快速排序法怎么排

时间:2023-05-04 08:23:55 阅读:21424 作者:1953

快速排序是面试中重要的算法。 很多人以前可能都接触过,可能包括我都忘了,今天就总结一下吧。 简单易懂

我们先来看看快速排序的动态演示。 (在一个非常容易使用的网站上,可以演示各种算法相关的动态图表。 )

33559 www.cs.usfca.edu//~galles/visualization/comparisonsort.html

代码实现(我相信您可以理解,实现的代码按从小到大的顺序排序,如果需要按从小到大的顺序排列,只需更改getStandardIndex函数中的两个判断,就可以按从小到大的顺序编写。 2

# include bits/stdc.husingnamespacestd; intgetstandardindex (vectorintnums,int low,int high ) /是原始数组规则//int randomNum=rand ) % (高- ) int key=nums[low]; //基准数据while(lowhigh-- ) while (lowhighnums ) high (=key ) ) /从右边开始小于第一个基准数据的值high--; if(lowhigh ) /使该值与low下标对应的值nums[low]=nums[high]; while(lowhighnums[low]=key ) /从左侧找到大于第一个基准数据的值low; if(lowhigh ) /使该值与high下标对应的值nums[high]=nums[low]; } nums[low]=key; //退出循环时,low=high,即当前下标是数组中我们要查找的基准数据的位置return low; //返回基准数据在数组中的位置) void quick sort (void quick sort (vectorintnums,int low,int high ) if (low high ) /当前需要快速列的元素数=1,退出快速列。 否则,递归调用的快速列)//基准数据默认为第一列//获取包含基准数据的下标quicksort(nums,low,index-1 ); //在基准数据左侧快速排序快速排序(nums,index 1,high ); //在基准数据的右侧快速提取}}int main () vectorintnums=(49、38、65、97、76、13、27、49、10 ); //要排序的数组quicksort(nums,0,nums.size ) (-1 ); for(autox:nums ) coutx ' '; 返回0; )总结:平均时间复杂度: o(n*logn ) ) )。

空间复杂性: o(logn )。

稳定性:不稳定

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。