recursion - Finding kth smallest element using Java -
recursion - Finding kth smallest element using Java -
i'm trying create code finding kth smallest element using partitions.
when run code, think works pretty fine less 5 numbers, whenever utilize bigger data--like on 100 or 10000 datas--and seek find kth number, keeps giving me java.lang.stackoverflowerror
message, or finish wrong answer.
here code:
import java.util.scanner; public class test2 { public static int partition(double arr[], int begin, int end){ int pivotindex = begin; double pivot = arr[pivotindex]; begin++; int p = begin; int r = (int) end; while (p <= r){ while (p <= r && arr[p] < pivot) p++; while(p<=r && arr[r] > pivot) r--; if (p > r){ swap(arr, pivotindex, r);} else {swap(arr, p, r); } } homecoming r;} public static void swap(double[] arr, int a, int b){ if (a <= b){ double temp; temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } } public static double selection(double[] arr, int begin, int end, int k){ int pivotindex = begin; int = pivotindex; pivotindex = partition(arr, begin, end); if (i == k-1){ homecoming arr[(k-1)]; } else if (i > k-1 ){ homecoming selection(arr, begin, i-1, k); } else{ homecoming selection(arr, i+1, end, k-i); }} public static void main (string[] args) { scanner scan = new scanner(system.in); system.out.println("selection test\n"); int n, i; system.out.println("enter number of elements"); n = scan.nextint(); double arr[] = new double [n]; system.out.println("\nenter "+ n +" elements"); (i = 0; < n; i++) arr[i] = scan.nextdouble(); system.out.println("\nenter kth smallest element you'd find"); int k = scan.nextint(); kthsmall(arr, k); system.out.println(arr[k-1 ]); } public static void kthsmall(double[] arr, int k){ selection(arr, 0, arr.length -1, k);}
i appreciate if tell me mistakes are.
java recursion partition
Comments
Post a Comment