Nth Maximum number in an array
முதலில் நாம் array-ல் உள்ள அனைத்து element-களிலும் மிகச்சிறிய(min) மற்றும் மிகப்பெரிய(max) number-ஐ கண்டறியவேண்டும். அதனை கொண்டுதான் அடுத்த maximum number-ஐ கண்டறியமுடியும்.
int arr[]={8,1,7,2,4,3,6,5}; for (int i=0;i<arr.length;i++){ if (arr[i] < min) { min = arr[i]; } if (arr[i] > max) { max = arr[i]; } }
மேற்கண்டவற்றில் loop முடியும்போது array-ல் உள்ள min மற்றும் max number கிடைத்துவிடும். இப்பொழுது first max number-ஐ print செய்வது என்றல் நேரடியாக கண்டுபிடிக்கப்பட்டுள்ள max value-ஐ print செய்துவிடலாம்.
if (n == 1) {// 1st maximum number only System.out.println("Maximum number is "+max); } else {....}
ஆனால் 2-வது 3-வது... பெரிய(max) number-ஐ print செய்யவேண்டுமெனில். அதற்க்கு அடுத்தடுத்த பெரிய number-களை கண்டறியவேண்டும்.
for (int t=2;t<=n; t++){ int nextmax =min ; for (int i = 0; i < arr.length; i++){ if (arr[i]<max && arr[i]>nextmax){ nextmax=arr[i]; } } max = nextmax; } System.out.println("Maximum number is "+max);
அடுத்த 2-வது max number. அதாவது முதல் max number-ஐ விட சிறியதாக இருக்கவேண்டும். ஆனால் மற்ற number-களை விட பெரியதாக இருக்க வேண்டும். இதை கண்டறிய மேற்கண்டவாறு loop-ஐ பயன்படுத்த வேண்டும். பிறகு loop-ல் arr[i]<max&&arr[i]>nextmax condition apply செய்யவேண்டும். இவ்வாறு அடுத்தடுத்த maximum number-ஐ கண்டு பிடிக்கும்போது max=nextmax என இடமாற்றம் செய்துகொள்ளவேண்டும்.
Complete program
import java.util.Scanner;
public class Find_nth_Maximum {
public static void main(String[] args) {
int arr[]={8,1,7,2,4,3,6,5};
Scanner sn=new Scanner(System.in);
System.out.print("Enter n-th value: ");
int n=sn.nextInt();
if (n>0 && n<=arr.length) {
int min = arr[0];
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
if (arr[i] > max) {
max = arr[i];
}
}
// "min" is smallest number in array
// "max" is largest numner in array
if (n == 1) {
// if 1st maximum means largest number
// we've find already
System.out.println("Maximum number is "+max);
} else {
for (int t = 2; t <= n; t++) {
int nextmax =min ;
for (int i = 0; i < arr.length; i++) {
if (arr[i]<max && arr[i]>nextmax) {
nextmax=arr[i];
}
}
max = nextmax;
}
System.out.println("Maximum number is "+max);
}
} else {
System.out.println("Array has only "+arr.length+" elements. Please enter 1-"+arr.length);
}
}
}
Enter n-th value: 3
Maxmimum number is 6
// checked another output
Enter n-th value: 9
Array has only 8 elements. Please enter 1-8
Nth Minimum number in an array
அடுத்தடுத்த minimum number-ஐ கண்டறிய கீழ்க்கண்டவாறு loop-ஐ பயன்படுத்த வேண்டும். அதாவது min number-ஐ விட பெரிய number-ஆக இருக்கவேண்டும்.
ஆனால் மற்ற number-களை விட சிறியதாக இருக்கவேண்டும். இதுவே அடுத்தடுத்த min number-களை கண்டறியும் logic.
i.e if(arr[i] > min && arr[i] < nextmin)
for (int t = 2; t <= n; t++) { int nextmin = max; for (int i = 0; i < arr.length; i++) { if (arr[i] > min && arr[i] < nextmin) { nextmin = arr[i]; } } min = nextmin; } System.out.println("Minimum number is "+min);
Complete program
import java.util.Scanner;
public class Find_nth_Minimum {
public static void main(String[] args) {
int arr[] = {3,0, 12, 41, 11, 5, 6};
Scanner sn = new Scanner(System.in);
System.out.print("Enter n-th value: ");
int n = sn.nextInt();
if (n > 0 && n <= arr.length) {
int max = arr[0];
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
if (arr[i] > max) {
max = arr[i];
}
}
// "min" is smallest number in array
// "max" is largest numner in array
if (n == 1) {
// if 1st minimum means smallest number
// we've find already
System.out.println("Minimum number is "+min);
} else {
for (int t = 2; t <= n; t++) {
int nextmin = max;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > min && arr[i] < nextmin) {
nextmin = arr[i];
}
}
min = nextmin;
}
System.out.println("Minimum number is "+min);
}
} else {
System.out.println("Array has only " + arr.length + " elements. Please enter 1-"+arr.length);
}
}
}
Enter n-th value: 3
Minimum number is 5
// checked another output
Enter n-th value: 9
Array has only 7 elements. Please enter 1-7
Pgcomments
இது பற்றிய தங்களின் கருத்துகளை இங்கே பதிவிடுங்கள் . இது பயனுள்ளதாக விரும்பினால் மற்றவர்களுக்கும் இதை share செய்யுங்கள்.
Comments