还是快速排序
来源:互联网 发布:mac终端查看ip地址 编辑:程序博客网 时间:2024/06/14 05:43
使用三数中指法可以进一步提升快速排序的效率,实现如下:
int median3(int *arr, int left, int right){ int center = (left + right) / 2; if (arr[left] > arr[center]) { swap(arr[left], arr[center]); } if (arr[left] > arr[right]) { swap(arr[left], arr[right]); } if (arr[center] > arr[right]) { swap(arr[center], arr[right]); } swap(arr[center], arr[right - 1]); return arr[right - 1];}void insert_sort(int *arr, int left, int right){ int i, j, key; for (i = left; i <= right; ++i) { key = arr[i]; for (j = i; j > left && arr[j - 1] > key; --j) { arr[j] = arr[j - 1]; } arr[j] = key; }}#define cutoff 3void qsort(int *arr, int left, int right){ if (left + cutoff <= right) { int pivot = median3(arr, left, right); int i = left; int j = right - 1; for (;;) { while (arr[++i] < pivot) { } while (arr[--j] > pivot) { } if (i < j) { swap(arr[i], arr[j]); } else { break; } } swap(arr[i], arr[right - 1]); qsort(arr, left, i - 1); qsort(arr, i + 1, right); } else { insert_sort(arr, left, right); }}
0 0
- 还是快速排序
- 快速排序法,写完自己还是很晕。靠。
- 1007(分治法,快速排序,但还是时间超限)
- 杭电ACM OJ 1031 Design T-Shirt 还是快速默写一波 快速排序 轻松搞定!
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 数据库 UPDATE多条记录不同值,同时UPDATE多个字段
- Java多线程总结之线程安全队列Queue
- hadoop2.0的基本配置(修正)
- 初始化引用
- GTK+浅谈之三简单计算器
- 还是快速排序
- 冒泡排序(2015年9月9日)
- UGUI 5.0版本Anchors功能详解
- 处理“System.Web.HttpException: 超过了最大请求长度”
- LoadRunner 学习(2015-9-9)
- Java实现常见排序
- leetcode_Permutations II
- 递归实现拆半查找
- 20150909解决浏览器兼容问题