重温经典排序算法之快速排序 |
您所在的位置:网站首页 › 用c语言实现快速排序算法 › 重温经典排序算法之快速排序 |
目录
1.快速排序原理2.算法性能分析(1)时间复杂度(2)算法稳定性
3.图解分析4.C/C++实现
1.快速排序原理
对于要排序的数组,首先任意选取一个数据(通常为首元素)作为关键数据,将序列中所有比该元素小的元素都放到它的左边,将所有比它大的元素都放到它的右边,再对左右两边分别用同样的方法直到每一个待处理的序列长度为1,排序结束。 2.算法性能分析 (1)时间复杂度a.最好情况的时间复杂度:每次划分所选择的关键数据均为所在序列的中位数,则经过logn趟划分即可得到长度为1的子序列,此时的时间复杂度为 O ( n l o g 2 n ) O(nlog_2n) O(nlog2n) b.最坏情况的时间复杂度:每次划分所选择的关键数据均为所在序列的最大或最小,则需要经过n趟划分才能得到长度为1的子序列,此时的时间复杂度为 O ( n 2 ) O(n^2) O(n2) 平均时间复杂度为 O ( n l o g 2 n ) O(nlog_2n) O(nlog2n) (2)算法稳定性若一个序列为(3(1),8,2,9,1,3(2)),则经过第一趟(3(2),1,2,3(1),9,8),此时两个相同数的相对位置就发生了变化,因此快速排序算法是一种不稳定的排序算法。 3.图解分析原始序列为[3,5,8,2,9,1] 第一趟排序的图解如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |