排序-快速排序算法

快速排序算法是冒泡排序的一种改进,先找到一个元素,设置2各游标,i从前到后遍历,j从后向前遍历,如果第j个小于此元素,则调换,然后i++,如果遇到第i个大于此元素,则调换。其实这就是一个挖坑-填坑的过程。具体的代码如下:

int base_quicksort(int A[], int first, int last){
    int temp = A[0];
    int i = 0;
    int j = sizeof(A[])/4 - 1;
while(i != j){ while(A[j] > temp) j--; A[i] = A[j]; while(A[i+1] < temp) i++; A[j] = A[i+1]; A[j] = temp; return j; } } void quicksort(int A[], int first, int last){ if(first < last){ int i = base_quicksort(A, first, last); quicksort(A, first, i-1); quicksort(A, i+1, last); } }

 快速排序算法的时间复杂度为:平均情况下是O(nlog2n),最坏情况:O(n2)

空间复杂度为O(log2n)

不稳定,较复杂。

posted @ 2014-09-28 17:04  Runbbit  阅读(150)  评论(0编辑  收藏  举报