剑指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");  
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/firework333/article/details/49950681

Java七大设计原则详解及运用

-
  • 1970年01月01日 08:00

剑指Offer-29-数组出现次数超过一半的数字-基于Partition函数的O(n)算法

如果把这个数组排序,那么排序之后位于数组中间的数字一定就是出现次数超过数组长度一半的数字。也就是说,这个数字就是是统计学中的中位数。 在随机快速排序算法中,我们现在数组中随机选择一个数字,然后调整数...
  • qing0706
  • qing0706
  • 2015-11-24 13:44:39
  • 470

剑指offer—第二章算法之快速排序

算法:排序和查找(二分查找,归并排序,快速排序),位运算等。 查找:顺序查找,哈希查找,二叉排序树查找,哈希表。 二分查找可以解决:"旋转数组中的最小数字","数字在排序数组出现的次数"等问题。 ...
  • skp127
  • skp127
  • 2016-05-17 21:44:03
  • 553

剑指offer——快速排序

快速排序是目前所有排序中性能较好的一种算法,最好情况和平均情况下时间复杂度均为O(nlogn),最坏的情况下时间复杂度为O(n^2)。快速排序采用递归,用空间换取时间。由于使用了递归,因此需要额外的存...
  • u010425776
  • u010425776
  • 2016-03-06 15:45:32
  • 1730

快速排序算法里的partition函数

快速排序算法里的partition函数用来解决这样一个问题:给定一个数组arr[]和数组中任意一个元素a,重排数组使得a左边都小于它,右边都不小于它。 // arr[]为数组,start、...
  • samjustin1
  • samjustin1
  • 2016-09-25 18:19:49
  • 540

快排中的partition函数

//p,r分别是这个要排序的区段的下标 int partion(int *arElem, int p, int r) { int x = arElem[r]; int i = p,j = p;...
  • gaopu12345
  • gaopu12345
  • 2016-03-10 19:16:18
  • 2431

快排光芒下被忽视的Partition函数

1.前言: 看到这篇标题,没有学过快排的人自然是不知道Partition函数的意思和作用,这里附上学习的连接Lantian的快排总结 我们现在都是被快排蒙蔽了双眼,没有意识到快最核心的划分函数Pa...
  • ltyqljhwcm
  • ltyqljhwcm
  • 2016-11-02 19:33:53
  • 1988

C/C++面试题(3)——剑指offer1(赋值运算符函数)

今天又复习了C++面试题,这道题的目的是:给出一个类的声明,然后写出这个类的构造函数、析构函数、拷贝构造函数和运算符重载函数。 题目 //题目:如下为类型CMyString的声明,请为该类型添加赋值...
  • jobbofhe
  • jobbofhe
  • 2016-09-01 00:00:06
  • 867

快速排序的两种实现方式,主要是Partition函数的实现原理不一样

package test; import java.util.Arrays; import java.util.Random; public class Partition { //方法一 p...
  • yuhushangwei
  • yuhushangwei
  • 2016-10-06 10:12:49
  • 892

剑指Offer:面试题01---赋值运算符函数

题目: 如下为类型CMyString的声明,请为该类型添加赋值运算符函数。 class CMyString { public: CMyString(char *pData=NULL); ...
  • dl0914791011
  • dl0914791011
  • 2013-11-25 16:26:02
  • 1178
收藏助手
不良信息举报
您举报文章:剑指offer 之 partition函数运用
举报原因:
原因补充:

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