剑指offer 之 partition函数运用

原创 2015年11月20日 18:52:02

1 找出数组最小的k个数## 标题 ##

@1;最简单也最直观的解法。对数组排序,顺序输出前k个数字。最快的是利用快排,时间复杂度为o(nlogn);

@2:利用快排中的partition ,该函数的思想为划分数组为两部分 左半部小于枢纽值,右半边大于枢纽值。利用该算法,可以得出本题的算法我们可以把最终的low值定位在 第k-1的位置。代码如下。

void mypartition(data[],int low,int high,int k)
{       
        int pivot=0;
       while(pivot!=k-1)
       {
           pivot=partition(data,low,high);
           if(pivot<k-1)
           pivot=partition(data,pivot+1,high);
           else
           pivot=partition(data,low,pivot-1);
       }

      for(int i=0;i<k;i++)
      printf("%d",data[i]);
      putchar("\n");  
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

剑指offer——最小的K个数(堆排或partition,复习排序算法思想精髓)

题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。思路: 维护一个由k个值组成的动态最大堆。然后接下来的每个数字和堆...

剑指offer--实现一个Add函数,让两数相加,不能使用+、-、*、/、++、--等四则运算符

分析:这又是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。 看到的这个题目,首先我们可以分析人们是如何做十进制的加法的,比如...

剑指Offer 21:包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到站的最小元素的min函数。在该栈中,调用min、push以及pop的时间复杂度都是O(1)。 题目分析我们要实现的两种效果是: 数据结构仍然是栈的...

【面试题】剑指offer11--求一个数的指数次方,模拟实现一个pow函数

【面试题】剑指offer11--求一个数的指数次方,模拟实现一个pow

剑指offer 面试题21 包含 min 函数的栈

剑指offer 面试题21 包含 min 函数的栈 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数, 在该栈中,调用 min、push 及 po...

剑指offer面试题1之赋值运算符函数

//要写一个赋值运算符函数,即重载赋值运算符,有两种形式:类成员函数和友元函数;我们这里用类成员函数的形式 #pragma once class CMyString { public: //CMy...

剑指Offer-->包含min函数的栈

首先我们可以想到一种很简单的方法:将元素压入栈中,当第二个元素压栈的时候,与第一个元素进行比较,然后使较大的元素出栈,压栈结束后,栈中存留的便是最小的元素。但是,如果我们要想得到下一个最小的元素呢? ...

《剑指offer》:自己写一个pow函数

今天打google在codejam上办的apactest,成绩还行吧(最后排名540),第二题逗比了,自己逻辑后来理清楚,但是代码还是原来的想法,wa了两次才找到了bug。 第二题需要实现一个整数的...

剑指offer:包含min函数的栈(java)

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1).     看到这个问题,我们的第一反应可能是每次压入一个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剑指offer 之 partition函数运用
举报原因:
原因补充:

(最多只允许输入30个字)