find Kth smallest
来源:互联网 发布:windows7系统优化 编辑:程序博客网 时间:2024/06/05 15:26
点击打开链接
public class KthSmallest {// This function returns k'th smallest element in arr[l..r] // using QuickSort based method. ASSUMPTION: ALL ELEMENTS // IN ARR[] ARE DISTINCT int kthSmallest(int arr[], int l, int r, int k) { // If k is smaller than number of elements in array if (k > 0 && k <= r - l + 1) { // Partition the array around a random element and // get position of pivot element in sorted array int pos = randomPartition(arr, l, r); // If position is same as k if (pos-l == k-1) return arr[pos]; // If position is more, recur for left subarray if (pos-l > k-1) return kthSmallest(arr, l, pos-1, k); // Else recur for right subarray return kthSmallest(arr, pos+1, r, k-pos+l-1); } // If k is more than number of elements in array return Integer.MAX_VALUE; } // Utility method to swap arr[i] and arr[j] void swap(int arr[], int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } // Standard partition process of QuickSort(). It considers // the last element as pivot and moves all smaller element // to left of it and greater elements to right. This function // is used by randomPartition() int partition(int arr[], int l, int r) { int x = arr[r], i = l; for (int j = l; j <= r - 1; j++) { if (arr[j] <= x) { swap(arr, i, j); i++; } } swap(arr, i, r); return i; } // Picks a random pivot element between l and r and // partitions arr[l..r] arount the randomly picked // element using partition() int randomPartition(int arr[], int l, int r) { int n = r-l+1; int pivot = (int)(Math.random()) % n; swap(arr, l + pivot, r); return partition(arr, l, r); } // Driver method to test above public static void main(String args[]) { KthSmallest ob = new KthSmallest(); int arr[] = {12, 3, 5, 7, 4, 19, 26}; int n = arr.length,k = 3; System.out.println("K'th smallest element is "+ ob.kthSmallest(arr, 0, n-1, k)); }}
0 0
- find Kth smallest
- quick select to find the kth smallest element in array
- Kth Smallest element
- [LeetCode] 4 Find the kth smallest element in two sorted array
- find the th smallest
- Find the kth minimum.
- #leetcode#Kth Smallest Element in a BST
- 230.Kth Smallest Element in a BST
- leetcode--Kth Smallest Element in a BST
- Kth Smallest Element in a BST
- Kth Smallest Element in a BST
- Leetcode|Kth Smallest Element in a BST
- Kth Smallest Element in a BST
- [leetcode] Kth Smallest Element in a BST
- 【LeetCode】Kth Smallest Element in a BST
- Kth Smallest Element in a BST
- LeetCode Kth Smallest Element in a BST
- Kth Smallest Element in a BST
- Firebase Android 使用整理
- 查找数组的前K个最小值的算法
- 关于block的基础
- linux 账户管理 经验练习 useradd goups
- Java异常机制
- find Kth smallest
- 2016 多校 Multi-University Training Contest 4 Another Meaning
- 2016 多校 Multi-University Training Contest 4 Substring
- Chromium为视频标签<video>渲染视频画面的过程分析
- SIGPIPE信号
- KMP介绍->POJ3461
- ubuntu 14.04 双显电脑 安装 cuda7.5
- Java源码学习--ArrayList源码解析
- WDCP 快速搭建及设置301