快速排序也是典型的分治策略实现,与归并排序不同,快排的关键部分在于 分 也就是partition部分,快排平均时间复杂度是O(nlgn),最差时间是O(n^2),属于不稳定排序
下面是快排的C语言实现。
//p, r分别是数组中元素的下标 int partition(int A[], int p, int r) { int i, j; i = p - 1; for(j = p; j < r; j++) { if (A[j] <= A[r]) { swap(&A[++i], &A[j]); } } //i总是最后一个满足小于等于A[r]的元素 swap(&A[i + 1], &A[r]); return i + 1; } void quicksort(int A[], int p, int r) { if (p < r) { int q = partition(A, p, r); quicksort(A, p, q - 1); quicksort(A, q + 1, r); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-07 00:40:55