快排:

void QuickSort(int array[], int low, int high)
{  if (low >= high)  //为了防止无限递归下去,导致栈溢出,设置此条件  {  return;  }  int pivotkey = array[low];  //设置一个对照元素,把这个元素先暂时拿出来,想象它的位置的左边都比它大,右边都比它小,空出位置用来存放比对照元素小的元素  int iLow = low;  int iHigh = high;  while (low < high)  {  while (low < high && array[high] <= pivotkey)  {  high--;  }  array[low] = array[high];  //从右边往左边找,直到找到一个比对照元素要大的元素,放到对照元素的前面  while (low < high && array[low] >= pivotkey)  {  low++;  }  array[high] = array[low]; //然后从左往右找,直到找到一个比对照元素要小的元素,放到对照元素的后面  }  array[low] = pivotkey;  //最后在中间放置对照元素,这时候左边的数据都比大的数据,右边的数据都是小的数据  QuickSort(array, iLow, low - 1);  //对照元素左边的数据再次进行以上排序  QuickSort(array, low + 1, iHigh);  //对照元素的右边数据再次进行以上排序
} 

找出最小的K个数

#include <iostream>
using namespace std;void swap(int *a, int *b)
{int temp = *a;*a = *b;*b = temp;
}
void GetLeastNumbers_Solution(int input[],int start, int end, int k) {int key = input[0];int left = start;int right = end;while(left < right){while(left < right && key <= input[right])--right;swap(&input[left], &input[right]);while(left < right && key >= input[left])++left;swap(&input[left], &input[right]);}if(left+1 < k)GetLeastNumbers_Solution(input, left+1, end, k-left-1);if(left+1 > k)GetLeastNumbers_Solution(input, start, left-1, k);
}int main()
{int k = 4; int arr[] = {4,5,1,6,2,7,3,8};GetLeastNumbers_Solution(arr, 0, 7, k);for(int i = 0; i < k; ++i){cout<<arr[i]<<" ";}return 0;
}

找出无序数组最小的K个数(基于快排,效率高)相关推荐

  1. 算法导论:快速找出无序数组中第k小的数

    题目描述: 给定一个无序整数数组,返回这个数组中第k小的数. 解析: 最平常的思路是将数组排序,最快的排序是快排,然后返回已排序数组的第k个数,算法时间复杂度为O(nlogn),空间复杂度为O(1). ...

  2. 整数无序数组求第K大数(暴力|快排) - 滴滴出行2018校园招聘内推笔试-研发工程师

    时间限制:1S 空间限制:32768K 题目描述: 给定无序整数序列,求第K大的数,例如{45,67,33,21},第2大的数为45 输入描述: 输入第一行为整数序列,数字用空格分割,如:45 67 ...

  3. 典型的Top K算法_找出一个数组里面前K个最大数

    原文 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入 ...

  4. 找出一个数组里面前K个最大数

    前言:今天早上来实验室,同桌问了我一个问题:找出一个数组里面前K个最大数的高效算法.最近正好在看数据结构和算法相关内容,便以己之力帮她思考了思考. 问题:找出一个数组里面前K个最大数. 解法: 1.第 ...

  5. 找出无序数组中最小的k个数(top k问题)

    2019独角兽企业重金招聘Python工程师标准>>> 给定一个无序的整型数组arr,找到其中最小的k个数 该题是互联网面试中十分高频的一道题,如果用普通的排序算法,排序之后自然可以 ...

  6. 程序员面试金典 - 面试题 17.14. 最小K个数(快排划分O(n))

    1. 题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4]提示: 0 &l ...

  7. 373. Find K Pairs with Smallest Sums 找出求和和最小的k组数

    [抄题]: You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. D ...

  8. 程序员编程艺术:第三章、寻找最小的k个数

    程序员编程艺术:第三章.寻找最小的k个数 作者:July. 时间:二零一一年四月二十八日. 致谢:litaoye, strugglever,yansha,luuillu,Sorehead,及狂想曲创作 ...

  9. 在哪里能收到python实例代码-Python找出最小的K个数实例代码

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 这个题目完成的思路有很多,很多排序算法都可以完成既定操作,关键是复 ...

最新文章

  1. 开源实时日志分析ELK
  2. 【云中沙箱】视频直播技术浅析与实践!
  3. 内核功能导致重启_诊断修复 TiDB Operator 在 K8s 测试中遇到的 Linux 内核问题
  4. python实现二叉堆中的大顶堆(大根堆)
  5. mysql illegal mix of_mysql字符集问题:Illegal mix of collations
  6. 关于 HANA CE Function
  7. TinyUI组件开发示例
  8. 我在华为做Android外包的真实经历!吊打面试官系列!
  9. VC 系统托盘 气泡提示
  10. 10.30完美笔试题
  11. 【js类库AngularJs】解决angular+springmvc的post提交问题
  12. win32收不到F10按键消息解决的方法
  13. export default 和 export 的使用方式(六)
  14. Waveform Audio 驱动(Wavedev2)之:WAV API模拟 1
  15. react antd select默认选中第一项
  16. Itunes降级(卸载+安装)+苹果软件降级安装(爱思+ITunes)
  17. 【电信学】【2019.07】基于ATOLL的5G网络规划与优化
  18. HTTP headers 详解 headers 常用属性
  19. centos官网下载地址
  20. 图像处理公共数据库下载地址集锦

热门文章

  1. Apache2.4配置ssl
  2. Python Matplotlib.plot Update image Questions
  3. JavaScript 实现继承的5种方式
  4. 人的幸福感取决于什么
  5. 线程----BlockingQueue
  6. 组建内存双通道的条件
  7. 扎实的基础是成功的法宝
  8. 学以致用十三-----Centos7.2+python3+YouCompleteMe成功历程
  9. 内核编程小结(引用)
  10. Vue 教程第四篇—— Vue 实例化时基本属性