算法导论学习002-快速排序

2017-05-21  本文已影响48人  BlackMammba

快速排序

简介

快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。
快速排序也属于比较排序中的一种,用到了分治的思想,综合来看快速排序是最常用的一种排序算法,速度快,效率高。

快速排序的描述

下面以对数组A[p...r]进行排序,来描述快速排序是如何利用分治思想进行快速排序的。

快速排序伪代码

QUICKSORT(A,p,r)

  1. if(p<r)
  2. q = PARTITION(A,p,r)
  3. QUICKSORT(A,p,q-1)
  4. QUICKSORT(A,q+1,r)

PARTITION(A,p,r)

  1. x = A[r]
  2. i = p-1
  3. for(j = p to r-1)
  4. if(A[j] <= x)
  5. i++;
  6. exchange(A[i],A[j])
  7. exchange(A[i+1], A[r]
  8. return i+1;

快速排序算法时间复杂度以及空间复杂度分析

End Talk Is Cheap Show You Mine Code

void quickSort(int *array, int start, int     end) {
if (arraySize == 0) {
    arraySize = end + 1;
}

if(start >= end){
    return;
}

logoutArray(array);
int i = partition(array,start,end);
quickSort(array,start, i-1);
quickSort(array,i+1,end);
}

int partition(int * array, int start , int     end){
int i , j ,tmp;
i = start;
j = end;

while(i != j){
    while(array[j] >= array[start] && i <     j){
        j--;
    }

    while(array[i] <= array[start] && i <     j){
        i++;
    }

    if(i < j){
        tmp = array[i];
        array[i] = array[j];
        array[j] = tmp;
    }
}

tmp = array[start];
array[start] = array[i];
array[i] = tmp;

return i;
}
上一篇下一篇

猜你喜欢

热点阅读