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:
Java Program to Implement Caesar Cypher
LinkedHashSet trong Java hoạt động như thế nào?
The HttpMediaTypeNotAcceptableException in Spring MVC
Lập trình đa luồng trong Java (Java Multi-threading)
Mapping Nested Values with Jackson
Java Program to Implement Floyd Cycle Algorithm
Spring Boot - OAuth2 with JWT
Java Program to Implement Queue using Linked List
Wrapper Classes in Java
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Generate Random Numbers Using Middle Square Method
Java – Reader to String
Java Program to implement Bit Set
An Intro to Spring Cloud Zookeeper
Giới thiệu java.io.tmpdir
Java Program to Implement SimpeBindings API
Java Program to Permute All Letters of an Input String
Java Program to Find Transitive Closure of a Graph
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Fixing 401s with CORS Preflights and Spring Security
Java Program to implement Bit Matrix
Guide to BufferedReader
Hướng dẫn tạo và sử dụng ThreadPool trong Java
Guide to PriorityBlockingQueue in Java
Java Program to Check whether Directed Graph is Connected using DFS
Zipping Collections in Java
Java Program to implement Circular Buffer
Guide to the Java Queue Interface
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Java Program to implement Priority Queue
Spring 5 Testing with @EnabledIf Annotation
DynamoDB in a Spring Boot Application Using Spring Data