标签:
快速排序算法是一种非常高效的内部排序算法,其平均时间复杂度为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); // 对右半半部分排序 } }
标签:
原文地址:http://www.cnblogs.com/wkx12/p/5175379.html