首页 > 编程知识 正文

快速排序需要几趟,最长公共子序列例子

时间:2023-05-05 04:19:38 阅读:118047 作者:918

前言本文介绍了Python和c快速排序的实现和说明

以下为本文正文内容,以下案例可供参考

一、交换顺序是什么? 基于交换的排序:根据序列中两个元素关键字的比较结果,交换序列中两个元素的位置。

交换顺序主要分为冒泡排序快速排序

二、什么是快速排序? 快速排序是泡沫排序的改进版,是平均速度最快的排序

三、算法思想在排序对象表L[1…n]中以一个元素pivot为基准,在一次排序中将排序对象表分为独立的两个部分L[1…k-1]和L[k 1…n],L[1…k-1]中确保小于或等于L[1…n],然后递归对两个子表重复上述步骤,直到每个部分只有一个元素或为空,直到所有元素都位于最终位置。

四.动态示威

五、代码示例5.1.C代码示例//将待排序的数组在第一个元素中分为左右两个部分intpartition(intarry )、int low ) {/* * * * * * * * * * * * *。 function3360小时复杂度为calls ://nonetableaccessed 3360//nonetableupdated 3360//none input ://arry [ ] -排序数组///low -数组初始index hight数组元素的最后一个下标output ://none return ://none others ://快速排序* * * * * * * * * * * * * * * * *。 相对于第一个元素,while (低高度)//low和hight搜索标准的最终位置) while (低高度) hight )=pivot )--hight; } arry[low]=arry[hight]; //小于基准的元素为左侧的while(lowhightarry[low]=pivot ) low; } arry[hight]=arry[low]; //将大于基准的元素向右移动(} arry[low]=pivot; //基准要素在最终位置返回低; //返回基准元素位置}voidquickstart(intarry[ ) ],int low, int hight ) {/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * function 330 nonetableupdated 3360//none input ://arry [ ] -已排序数组/low -数组的初始索引高数组元素的最后一个下标output ://none return 3360 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * if (low hight (//递归弹出的条件intpos=partitios ) 快速启动(arry,low,pos-1 ); 快速开始(arry,pos 1,hight ); }} 5.2.Python代码示例defpartition(Arry,low, hight ) : ''' :param arry:排名列表: param low :左侧索引值:param hight:右侧索引值:return:参考索引elowhight 3360 whilelowhightandarry [ hight ]=PV IOT : hight-=1arry [ low ]=arry [ hight ] whilelowhightandarry [ low ]=PV IOT : low=1arry [ hight ]=arry [ low ] arry [ low ]=pviotreturnlowdefquickstart (arry,low ), hight ) : ''' :param arry:已排序列表: param low :左侧索引值:param hight:右侧索引值: return : none ' artition(arry,low,hight )快速启动) arry,low,pos-1 )快速启动(arry,pos 1,hight )六、性能分析6.1空间复杂度

6.1.1最佳空间复杂度o(LOG2Nlog_2Nlog2N ) ) ) ) ) ) ) )。

6.1.2最坏的空间复杂度o(n ) ) ) ) ) )。

6.2小时复杂度时间复杂度=o(n*递归层数) ) )。

6.2.1最高时间复杂度o(nLOG2nlog_2nlog2n ) ) ) ) )。

6.2.2最坏的时间复杂度o(n2n^2n2 ) ) ) ) ) )。

如果初始数组有序或逆序,则快速排序效率最低,分割越均匀,效率越高。

6.3递归层数可以通过将递归层数转换为二叉树的高度来解决这个问题。

二叉树的最小高度=l o g 2 n log_2n log2 n

二叉树的最大高度=n

6.4稳定性快速排序是一种不稳定的排序算法

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