排序算法——快速排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法——快速排序相关的知识,希望对你有一定的参考价值。
原理
采用分治的思想。主要分为三步:
第一步,选择一个基数。
第二步,将排序数组在分区的过程,将比该基数小的放在左边,比该基数大的放在右边。
第三步,对左右分区执行同样的操作直到剩下一个数字。
分析
在最坏的情况下,也就是数据的划分不平衡,一部分是n-1个数字,另一部分没有数据,并且每次划分都是这种情况,则其时间复杂度就是O(n2);在一般情况(包括最好),其时间复杂度为O(nlog2n);由于以下实现过程在原数组的基础上对数组进行排序,故其空间复杂度是O(1)。
C语言实现
void qsort(int *arr, int start, int end) { int high = end, low = start; int value = arr[start]; if(NULL != arr || start < end){ while(low < high){ while(low < high && arr[high] > value){ high--; } if(low < high){ arr[low] = arr[high]; low++; } while(low < high && arr[low] < value){ low++; } if(low < high){ arr[high] = arr[low]; high--; } } arr[low] = value; qsort(arr, start, low - 1); qsort(arr, low + 1, end); } }
本文出自 “11219885” 博客,请务必保留此出处http://11229885.blog.51cto.com/11219885/1751524
以上是关于排序算法——快速排序的主要内容,如果未能解决你的问题,请参考以下文章