第九章 中位数和顺序统计量 9.2 期望为线性时间的选择算法
2017-01-02 00:00
495 查看
package chap09_Medians_and_Order_Statistics; import static org.junit.Assert.*; import java.util.Random; import org.junit.Test; public class SearchAlorithms { /** * 分割(快速排序中对数组的分割) * * @param n * @param start * @param end * @return */ protected static int partition(int[] n, int start, int end) { int p = end - 1; int s = start;// s位于大于a[p]和小于a[p]之间的位置 int tmp; for (int i = start; i < end; i++) { if (n[i] < n[p]) { tmp = n[i]; n[i] = n[s]; n[s] = tmp; s++; } } { tmp = n[s]; n[s] = n[p]; n[p] = tmp; } return s; } /** * 随机分割,将一个数组从随机选择的位置处分割,左边小,右边大 * * @param n * @param start * @param end * @return */ static protected int randomPartition(int[] n, int start, int end) { Random rand = new Random(23); int t = rand.nextInt(end - start) + start; int tmp; { tmp = n[t]; n[t] = n[end - 1]; n[end - 1] = tmp; } return partition(n, start, end); } /** * 搜索数组n中从start到end之间第k小的数字 * * @param n * @param start * @param end * @param k * @return */ static int randomSearch(int[] n, int start, int end, int k) { if (start == end - 1) return n[start]; int q = randomPartition(n, start, end); int p = q - start + 1; if (k == p) return n[q+1]; else if (k > p) return randomSearch(n, q, end, k - q); else return randomSearch(n, start, q, k); } @Test public void testName() throws Exception { int[] n = { 13, 19, 9, 5, 12, 8, 7, 4, 21, 2, 6, 11 }; int a = randomSearch(n, 0, 12, 1); System.out.println(a); } }
相关文章推荐
- 第九章 中位数和顺序统计量 9.2 期望为线性时间的选择算法
- 算法导论:第9章 中位数和顺序统计量_1期望为线性时间的选择算法
- 算法导论-第九章-中位数和顺序统计量:最坏情况为线性时间的选择算法C++实现
- 第九章中位数和顺序统计学 之 “寻找第i小元素之最坏情况线性时间的选择 最坏运行时间就为O(n)算法”
- CLRS 9.2期望为线性时间的选择算法
- 算法导论:第9章 中位数和顺序统计量_2最坏情况为线性时间的选择算法
- 小白进阶之期望为线性时间的选择算法
- 算法导论 第9章 中位数和顺序统计学(线性时间选择算法)
- 算法之分治——期望线性时间的选择(基础版本的选择)
- 《算法导论》笔记 第9章 9.2以期望线性时间做选择
- 中位数和顺序统计,以线性期望时间做选择
- 《算法导论》笔记 第9章 9.2以期望线性时间做选择
- 《算法导论》读书笔记之第9章 中位数和顺序统计学 最坏情况是线性时间的选择算法
- 选择问题的线性期望时间算法
- 期望为线性时间的选择算法
- 顺序统计量和中位数——线性时间的选择算法
- 中位数和顺序统计(线性时间)算法导论9.2
- 第九章中位数和顺序统计学之“查找第i小的元素(迭代版)平均运行时间为O(n)算法”(练习9.2-3)
- 以期望线性时间选择第i小的元素(9.2)
- 算法导论9.2以期望线性时间做选择