Java-program til at finde, om et givet heltal X optræder mere end N/2 gange i et array
I denne tutorial lærer vi, hvordan man finder ud af, om et givet heltal X optræder mere end N/2 gange i en sorteret matrix af N heltal. Men før du går videre, hvis du ikke er bekendt med begreberne for arrayet, så tjek artiklen Arrays in Java.
Input:
Array:4 5 3 6 2 3 1 7
Søgeelement:3
Output:
3 forekommer ikke mere end 4 gange.
Program 1:For at finde ud af, om et givet heltal X optræder mere end N/2 gange i et sorteret array af N heltal.
I denne tilgang vil vi se, hvordan man finder ud af, om et givet heltal X optræder mere end N/2 gange i en sorteret Array af N heltal ved at bruge sløjfer. Logikken bag at bruge denne tilgang er, at vi tæller forekomsten af elementet i det sorterede array og derefter sammenligner det med n/2-værdien. En ting at huske på er, at hvis vi først skal sortere arrayet, før vi tæller forekomsten af elementet. Dette vil gøre vores opgave meget lettere, da if-elementet, der skal søges i, vil være i tilstødende position, hvilket vil gøre vores opgave med at tælle forekomsten af den variabel lettere.
Algorithme
- Start
- Deklarer matrixstørrelsen.
- Bed brugeren om at initialisere matrixstørrelsen.
- Deklarer arrayet.
- Bed brugeren om at initialisere array-elementerne.
- Sortér arrayet ved at sammenligne og bytte array.
- Udskriv det sorterede array.
- Indtast det element, hvis frekvens du vil kontrollere.
- Brug af to til sløjfer gennemløber alle elementerne i arrayet og tæller frekvensen af elementet.
- Den første for-løkke bruges til at holde array-elementerne.
- Den anden for loop bruges til at kontrollere for de resterende array-elementer.
- Ved at bruge en if-løkke kontrolleres det, om elementet er opstået tidligere eller ej.
- Hvis elementet er opstået tidligere, skal du øge tællevariablen.
- Hvis elementet er opstået mere end n/2 gange, så udskriv meddelelsen om, at elementet er opstået mere end n/2 gange.
- Hvis elementet ikke er opstået mere end n/2 gange, så udskriv meddelelsen om, at elementet ikke er opstået mere end n/2 gange.
- Stop.
Nedenfor er koden til det samme.
Nedenstående program viser, hvordan man finder ud af, om et givet heltal X optræder mere end N/2 gange i et sorteret array af N heltal ved hjælp af loops.
/* Java Program to find the find if a given integer X appears more than N/2 times in a sorted Array of N integers using loops */
import java.util.*;
public class Main
{
// Main driver method
public static void main(String args[])
{
// Taking input from user
Scanner sc = new Scanner(System.in);
int n,x; //Declaring Variables
int count=0; //declare the variable and initialize it to 0
//Ask the user to enter the Array Size
System.out.println("Enter the Array Size ");
n=sc.nextInt();
//Declare the array
int arr[] = new int[n];
System.out.println("Enter the Array elements ");
for(int i=0;i<n;i++) //Ask the user to initialize the array
{
arr[i]=sc.nextInt();
}
//Use a for loop to Sort the Array
int temp; //Temporary variable to hold the element
System.out.print("Sorted Array: ");
for(int i = 0; i < n; i++) //Holds the array elements
{
for(int j = i + 1; j < n; j++) //Checks for the remaining elements
{
if(arr[i] > arr[j]) //Check for the condition
{
temp = arr[i]; //Sort by Swapping the variables
arr[i] = arr[j];
arr[j] = temp;
}
}
}
//Print the sorted array
for(int i=0;i<n;i++)
{
System.out.print(arr[i]+" ");
}
System.out.println("");
System.out.println("Enter the element which you want to check:");
x = sc.nextInt(); //Element that you want to check
for(int i = 0; i < n; i++)
{
if(arr[i] == x)
{
count++; //Increment the count each time the variable is found
}
}
//check whether the element has occurred for more than n/2 times
if(count > (n / 2))
{
System.out.println("Given Integer "+ x +" appears more than "+ n/2 + "times");
}
else
{
System.out.println("Given Integer "+ x +" does not appear more than "+ n/2 +" times");
}
}
}
Indtast Array Size 5
Indtast Array-elementerne 6 7 5 4 3 5 6 9 6 6
Sorteret Array:3 4 5 5 6 6 6 6 7 9
Indtast element, som du vil kontrollere:6
Givt heltal 6 vises ikke mere end 5 gange