读《算法导论》我来C语言实现(4)——快速排序
2012-11-20 20:51
225 查看
快速排序通常是用于排序的最佳的使用选择,这是因为其平均性能相当好,像合并排序一样,快速排序也是基于分治模式的,下面是快速排序的C语言实现过程:
#include <stdio.h> //将数组分为两部分,前半部分和后半部分分别小于和大于分隔的那个数 unsigned int partition(int *A, int p, int r) { int x = A[r]; int i = p - 1, j, temp; for (j = p; j < r; j++) { if (A[j] < x) { i++; temp = A[j]; A[j] = A[i]; A[i] = temp; } } temp = A[r]; A[r] = A[i + 1]; A[i + 1] = temp; return i + 1; } //采用分治法,递归排序 void quick_sort(int *A, int p, int r) { int q; if (p < r) { q = partition(A, p, r); quick_sort(A, p, q - 1); quick_sort(A, q + 1, r); } } int main() { int array[] = {5, 10, 2, 3, 9, -1, 3}; int i; quick_sort(array, 0, sizeof(array) / sizeof(int) - 1); for (i = 0; i < sizeof(array) / sizeof(int); i++) { printf("%d ", array[i]); } return 0; }
相关文章推荐
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- [笔记]一道C语言面试题:实现快速排序
- 读《算法导论》我来C语言实现(3)——堆排序和优先级队列
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 【原创】《算法导论》链表一章带星习题试解——附C语言实现
- c语言实现快速排序
- 算法导论(Introduction to Algorithms)之堆排序(C语言实现)
- C语言实现快速排序
- 算法导论:堆排序递归实现 (c语言)
- C语言实现冒泡、插入、选择、快速排序
- 《算法导论》动态规划—最长公共子序列(不连续)--c语言实现
- C语言实现快速排序
- 《算法导论》中红黑树的C语言实现
- 算法导论快速排序实现
- C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
- 如何利用C语言中的qsort库函数实现快速排序?
- 几种快速排序的实现(C语言描述)
- 数据结构排序算法之快速排序(c语言实现)
- 快速排序的插排随机主元三数取中优化C语言实现
- C语言实现数组快速排序(含对算法的详细解释)