《大话数据结构》读书笔记之快速排序源码及其优化
2013-08-18 12:13
281 查看
#include <stdio.h> void Swap(int *a, int *b) { int tem = *a; *a = *b; *b = tem; } int Partition(int a[], int low, int high) { int pivotkey = a[low]; while (low < high) { while (low < high && a[high] <= pivotkey) { --high; } //Swap(&a[low], &a[high]); //pivotky的值保存在a[high]中 a[low] = a[high]; //算法优化,把交换改为赋值 while (low < high && a[low] >= pivotkey) { ++low; } //Swap(&a[high], &a[low]); //pivotkey的值保存在a[low]中 a[high] = a[low]; } a[low] = pivotkey; return low; } void QSort(int a[], int low, int high) { int pivotLoc; if (low < high) { pivotLoc = Partition(a, low, high); QSort(a, low, pivotLoc - 1); QSort(a, pivotLoc + 1, high); } } void QuickSort(int a[], int n) { QSort(a, 0, n-1); } int main() { int arr[5]; int index; for (index = 0; index < 5; index++) { scanf("%d", &arr[index]); } QuickSort(arr, 5); printf("\nAfter sorting:\n"); for (index = 0; index < 5; index++) { printf("%d\n", arr[index]); } return 0; }
相关文章推荐
- 快速排序、基准元的选取及其优化
- 快速排序的几种方法及其优化
- 快速排序的优化及其与qsort的比较
- 《大话数据结构》读书笔记之冒泡排序和源码及优化算法源码
- 快速排序(二) jdk源码中如何优化快速排序
- 排序-快速排序-优化-基准值选择待排序数组的三个等距取样的中位数
- 八大排序之冒泡排序及其优化
- 快速排序的优化
- 源码系列:快速排序
- 快速排序的汇编级优化(windowds平台VS下dubug release模式对比 linux平台gcc的有无优化对比)
- 排序(1)——冒泡排序及其优化
- 九大排序算法及其实现- 插入.冒泡.选择.归并.快速.堆排序.计数.基数.桶排序.堆排序
- 排序-快速排序-优化-使用三向切分(优化重复元素的情况
- 快速排序的复杂度分析以及使用插入排序优化的快速排序
- 再次学习快速排序——优化
- 快速排序(递归及非递归算法源码)
- 快速排序优化
- 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 简单排序——冒泡排序及其优化
- 《大话数据结构》读书笔记之二叉树的遍历源码,和习题