二分法找数组中第K小的数
来源:互联网 发布:运动前吃什么 知乎 编辑:程序博客网 时间:2024/04/29 06:29
方法是二分法,可以说是快速排序的一个变形。
#include <stdio.h>void swap(int*a , int* b) { int temp = *a; *a = *b; *b = temp;}int findkth(int arr[], int l, int h, int k) { int x = arr[h]; int i = l-1, j; for (j=l; j<h; j++) { if (arr[j] <= x) { i++; swap(&arr[i], &arr[j]); } } swap(&arr[i+1], &arr[h]); if (i+2-l == k) { // 看下标为i+1的数是否是第k小的数 return arr[i+1]; } else if (k < i+2-l) { return findkth(arr, l, i, k); // 搜索i+1的左边</span> } else { return findkth(arr, i+2, h, k+l-2-i); // 搜索i+1的右边</span> }}int main() { int k, knum; k = 3; int arr[10] = {6, 7, 4, 2, 1, 0, 9, 8, 5, 3}; knum = findkth(arr, 0, 9, 10); printf("%d", knum); return 0;}
0 0
- 二分法找数组中第K小的数
- 两个有序数组找第k小的数
- 无序数组找第k小的数
- 数组中第k小的数
- 数组中第K小的数
- 找数组中第k大的数
- 找一个数组中第K大的数
- 【模拟】找第k小的数
- 找第k小的数
- 面试题:找两个有序数组所有数第K小的数
- related with 有序数组中第K小的数
- 4 两个有序数组中第k小的数
- 查找一个数组中第k小的数
- 在数组中找到第 k 小的数
- 找数组中第k个最小数
- 数组第K小的数
- 线性时间找第K小的数
- 快排查找第K小的数
- Java之final
- cocoa设计模式总结
- linux 挂载 fat32 和 ntfs格式u盘
- java.io.IOException: The stream is closed
- 集团信息化之路 电子采购系统的物料采购计划模块沟通会议
- 二分法找数组中第K小的数
- 对ceph radosgw的一些理解
- 网口扫盲一:网卡初步认识
- 资源链接
- java中最常用jar包的用途说明,适合初学者
- Get Stared for ISO App development.
- vlc for android录制视频与截图
- Android是如何在不同屏幕上适配图片的 -- 或控件大小
- 网口扫盲二:Mac与Phy组成原理的简单分析