This is a java program to find K such elements given by users, such that those numbers are closer to the median of the given sequence. We first find the median of the sequence and then compare with each element such that the difference between the median and number is minimum, and print such k elements.
Here is the source code of the Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a java program to find k numbers closest to median of N numbers import java.util.Random; import java.util.Scanner; public class K_Close_Numbers_Median { static int N = 25; static int[] sequence = new int[N]; public static void sort() { int i, j, temp; for (i = 1; i < N; i++) { j = i; temp = sequence[i]; while (j > 0 && temp < sequence[j - 1]) { sequence[j] = sequence[j - 1]; j = j - 1; } sequence[j] = temp; } } public static int median() { if(N%2 == 0) return ((sequence[N/2-1] + sequence[N/2])/2); else return sequence[N/2]; } public static void main(String args[]) { Random random = new Random(); for(int i=0; i<N; i++) sequence[i] = Math.abs(random.nextInt(100)); sort(); System.out.println("The Sequence is: "); for(int i=0; i<N; i++) System.out.print(sequence[i] + " "); int median = median(); System.out.println("\nEnter the number of elements close to median you want: "); Scanner sc = new Scanner(System.in); int k = sc.nextInt(); int i, j; if(N%2 == 0) { i = N/2-1; j = N/2; } else { i = N/2-1; j = N/2+1; } boolean flag = false; int n; for(n=0; n<k; n++) { if(median-sequence[i] < sequence[j]-median) { System.out.print(sequence[i] + " "); i--; if(i == -1) { n++; flag = true; break; } } else { System.out.print(sequence[j] + " "); j++; if(j == N) { n++; break; } } } while(n < k) { if(flag == true) { System.out.print(sequence[j] + " "); j++; n++; } else { System.out.print(sequence[i] + " "); i--; n++; } } } }
Output:
$ javac K_Close_Number_Median.java $ java K_Close_Number_Median The Sequence is: 3 6 14 17 21 27 27 35 35 38 38 40 40 41 41 43 55 67 73 77 79 82 82 83 87 Enter the number of elements close to median you want: 5 40 41 41 38 38
Related posts:
Spring MVC Custom Validation
Custom HTTP Header with the HttpClient
Java Stream Filter with Lambda Expression
TreeSet và sử dụng Comparable, Comparator trong java
Java Program to Implement Stack using Linked List
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
Template Engines for Spring
A Quick JUnit vs TestNG Comparison
Marker Interface trong Java
Sorting in Java
Convert Hex to ASCII in Java
Java Program to Implement SynchronosQueue API
Java Program to Construct K-D Tree for 2 Dimensional Data
Guide to the ConcurrentSkipListMap
ExecutorService – Waiting for Threads to Finish
Java Program to Implement Lloyd’s Algorithm
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Java Program to Implement Min Hash
Apache Commons Collections Bag
Jackson Date
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
Returning Custom Status Codes from Spring Controllers
Java Program to Perform Arithmetic Operations on Numbers of Size
A Guide to the ViewResolver in Spring MVC
Java Program to Implement ConcurrentSkipListMap API
Java Program to Implement ArrayBlockingQueue API
Java Program to Perform Partial Key Search in a K-D Tree
The Difference Between Collection.stream().forEach() and Collection.forEach()
Hamcrest Collections Cookbook
Java Map With Case-Insensitive Keys
Tính đóng gói (Encapsulation) trong java
Autoboxing và Unboxing trong Java