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:
Registration – Activate a New Account by Email
Lớp Collectors trong Java 8
Hướng dẫn Java Design Pattern – State
Hướng dẫn Java Design Pattern – Transfer Object
Logging a Reactive Sequence
String Operations with Java Streams
Count Occurrences of a Char in a String
Cơ chế Upcasting và Downcasting trong java
Hướng dẫn Java Design Pattern – Visitor
Từ khóa static và final trong java
Java Program to Implement Merge Sort on n Numbers Without tail-recursion
Java Multi-line String
Map Interface trong java
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Guide to BufferedReader
Bootstrapping Hibernate 5 with Spring
Query Entities by Dates and Times with Spring Data JPA
Returning Custom Status Codes from Spring Controllers
Java Program to Implement Splay Tree
New Stream Collectors in Java 9
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Lấy ngày giờ hiện tại trong Java
Redirect to Different Pages after Login with Spring Security
Biến trong java
Java Program to Find Nearest Neighbor for Dynamic Data Set
Java Program to Implement Flood Fill Algorithm
Java Program to Implement Skew Heap
Tạo ứng dụng Java RESTful Client với thư viện OkHttp
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
Java Program to Create the Prufer Code for a Tree
Java Program to Implement Hash Tables chaining with Singly Linked Lists