Kmin

Kmin of Array

【本文链接】

http://www.cnblogs.com/hellogiser/p/kmin-of-array.html

C++
Code






1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

 

/*

     version: 1.0

     author: hellogiser

     blog: http://www.cnblogs.com/hellogiser

     date: 2014/5/30
*/

int Partition(int a[], int left, int right)

{
    // partition so that a[left..p-1]<=a[p] and a[p+1..right]>a[p]

    int pivot = a[left], i = left , j = right;

    while (i < j)

     {

        while (a[i] <= pivot) i++;

        while (a[j] > pivot) j--;

        if (i < j)

             myswap(a[i], a[j]);

     }

     myswap(a[left], a[j]);

    return j;

}

int Kmin(int a[], int left, int right, int k)
{

    // a[0..n-1],  1<=k<=n

    if(left <= right) // less or equal

    {

        int p = Partition(a, left, right);

        if(p < k - 1)

            return Kmin(a, p + 1, right, k); // right search
        else if(p > k - 1)

            return Kmin(a, left, p - 1, k); // left search

        else return a[p];

     }
    return NOT_FOUND;
}

int Kmin(int a[], int n, int k)

{
    if (k < 1 || k > n)

        return NOT_FOUND;

    return Kmin(a, 0, n - 1, k);

}

【本文链接】

http://www.cnblogs.com/hellogiser/p/kmin-of-array.html

时间: 2024-08-24 18:21:17

Kmin的相关文章

70 数组的Kmin算法和二叉搜索树的Kmin算法对比

[本文链接] http://www.cnblogs.com/hellogiser/p/kmin-of-array-vs-kmin-of-bst.html [分析] 数组的Kmin算法和二叉搜索树的Kmin算法非常类似,其本质是找序列中的第K大或者第K小的元素,可以借鉴QuickSort的思想加以实现. [Kmin_of_Array] C++ Code 1234567891011121314151617181920212223242526272829303132333435363738394041

算法导论-顺序统计

目录 1.问题的引出-求第i个顺序统计量 2.方法一:以期望线性时间做选择 3.方法二(改进):最坏情况线性时间的选择 4.完整测试代码(c++) 5.参考资料 内容 1.问题的引出-求第i个顺序统计量 什么是顺序统计量?及中位数概念 在一个由元素组成的集合里,第i个顺序统计量(order statistic)是该集合第i小的元素.例如,最小值是第1个顺序统计量(i=1),最大值是第n个顺序统计量(i=n).一个中位数(median)是它所在集合的“中点元素”.当n为奇数时,中位数是唯一的:当n

PHP对一个二维数组内的元素进行排序和冒泡排序

$arr=array( 'a'=>array('name'=>'n1','age'=>22), 'b'=>array('name'=>'n2','age'=>21), 'c'=>array('name'=>'n3','age'=>25), 'd'=>array('name'=>'n4','age'=>20) ); //要求根据age值,对数组进行排序. $newArr=array(); $arrn=$arr; foreach($arr

iOS 中这些是否熟练掌握——(1)

声明:本篇博文是作者原创作品.参考1  参考2  参考3  参考4  参考5  参考6 关于网上一些关于iOS资料,自己通过学习做了一些整理,这里仅仅作为笔记,方便自己编码过程中约束规范,加深理解. 1.什么是 Handoff ? 参考 Handoff 使用前要保证,手机 和 电脑在同一局域网下(连接同一个WiFi),首先要在电脑(iCloud)和手机上登陆你的苹果ID,然后手机上开启 Handoff 在 电脑的 Dock 上会看到有一条来自于 ***IPhone 的邮件,这样就将手机与电脑进行

LeetCode(3) || Median of Two Sorted Arrays

LeetCode(3) || Median of Two Sorted Arrays 题记 之前做了3题,感觉难度一般,没想到突然来了这道比较难的,星期六花了一天的时间才做完,可见以前基础太差了. 题目内容 There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should

[leetcode]_Palindrome Number

判断integer是否为回文串(负数全部不为回文串) 思路很直接,提取出integer中的每一位,一头一尾进行比较是否相同. 一次AC , 直接上代码: public boolean isPalindrome(int x) { if(x < 0) return false; else if(x >= 0 && x <= 9) return true; else{ int[] num = new int[20]; int i = 0 ; while(x > 0){ n

应用程序开发之模仿史上最牛游戏(二)

声明:转载请注明http://www.cnblogs.com/letougaozao/p/3708887.html 新建关卡控制器 自定义UIScrollView 增加UIPageView 每个关卡的View 整体效果展示 一.新建关卡控制器 1??拖线 -修改控制器class -修改控制器的View的class(方便设置背景) -装资源文件 -返回按钮 二.自定义UIScrollView 1??在初始化方法里面做一些事情 -添加四张背景图片 1.创建四个FullView 2.将这四个view加

bzoj4546 codechef XRQRS

Description 给定一个初始时为空的整数序列(元素由1开始标号)以及一些询问: 类型1:在数组后面就加入数字x. 类型2:在区间L…R中找到y,最大化(x xor y). 类型3:删除数组最后K个元素. 类型4:在区间L…R中,统计小于等于x的元素个数. 类型5:在区间L…R中,找到第k小的数. Input 输入数据第一行为一个整数q,表示询问个数,接下来q行,每行一条询问 对应题目描述. 类型1的询问格式为“1 x”. 类型2的询问格式为“2 L R x”. 类型3的询问格式为“3 k

iOS常见的面试题总结

1.   简述OC中内存管理机制 oc中的内存管理机制是自动引用计数,它分为两种方式:MRC和ARC,MRC是手动管理内存,ARC是系统自动管理内存:他的原则是谁开辟谁释放,有开辟就要有销毁 2.   readwrite,readonly,assign,retain,copy,nonatomic .atomic.strong.weak属性的作用? Readwrite:读写特性,可读可写(是默认属性) Readonly:只读,只有getter没有setter Assign:修饰一些基本的数据类型(