快速排序算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序算法相关的知识,希望对你有一定的参考价值。
快速排序算法是一种非常高效的内部排序算法,其平均时间复杂度为O(nlogn),且其性能在相同时间复杂度中最好,不过
在最坏的情况下会退化成冒泡排序,此时时间复杂度为O(n^2)。就平均性能来讲,快速排序是一种非常高效的算法,现在
介绍一种比较简单的快速排序的实现算法。
代码如下:
#include <stdio.h> #define N 10 int main() { void sort(int *a, int left, int right); int a[N]; int i; for(i = 0; i < N; i++) scanf("%d", &a[i]); sort(a, 0, N-1); // 缺陷,主函数中调用时,要检查left是否小于right for(i = 0; i < N; i++) printf("%d ", a[i]); return 0; } void sort(int *a, int left, int right) { if(left < right) // 当只剩一个数据时返回,即left == right { int key = a[left]; int low = left; int high = right; while(low < high) { while(low < high && a[high] >= key) high--; a[low] = a[high]; while(low < high && a[low] <= key) low++; a[high] = a[low]; } a[low] = key; sort(a, left, low-1); // 对左半部分排序 sort(a, low+1, right); // 对右半半部分排序 } }
以上是关于快速排序算法的主要内容,如果未能解决你的问题,请参考以下文章