C Program for å finne maksimalt element i en matrise

 C Programming >> C C# Program >  >> C
C Program for å finne maksimalt element i en matrise
  • Skriv et C-program for å finne det største elementet i en matrise.

Gitt en matrise med lengde N, må vi finne maksimumselementet i matrise og dens posisjon i array. Vi kan finne det maksimale elementet i en matrise ved å krysse matrisen fra indeks 0 til N-1 og sammenligne hvert element med det maksimale elementet funnet til nå ved å bruke sammenligningsoperatorer.

Algorithme for å finne maksimalt element i array
  • Først av alt, ta N tall som input fra brukeren og lagre det i en matrise (la oss kalle det inputArray).

  • Vi vil deklarere variablene maxElement og maxElementPosition og initialisere den med henholdsvis det første elementet i inputArray og 0.

  • Vi vil begynne å krysse inputArray fra indeks 0 til N -1 og sammenligne hvert element med maxElement. Hvis maxElement er mindre enn gjeldende element, vil vi oppdatere maxElement og maxElementPosition med henholdsvis gjeldende element og gjeldende posisjon.

  • Til enhver tid anta at vi er på indeks i, så vil maxElement gi maksimumselementet mellom matriseindeks 0 til i.
Tidskompleksitet:O(n)

C-program for å finne maksimalt element i array

I programmet nedenfor tar vi først antall elementer i array som input fra bruker og lagrer i en heltallsvariabel 'elementCount'. Deretter tar vi 'elementCount'-tall som input fra brukeren og lagrer dem i en heltallsmatrise ved å bruke en for-løkke. Nå antar vi at det første elementet (inputArray[0]) er det maksimale elementet i inputArray og begynner å krysse inputArray-formindeks 0 til N-1. For hvert element sammenligner vi dets verdi med maxElement og oppdaterer verdien av maxElement Hvis gjeldende element er større enn maxElement. På slutten av kryssingen vil maxElement inneholde det maksimale elementet for inputArray og maxElementPosition vil inneholde dets posisjon i array.

/*
* C Program to find maximum element in an array
*/

#include <stdio.h>
#include <conio.h>

int main(){
    int maxElement, inputArray[500], maxElementPosition;
    int elementCount, counter;
    
    printf("Enter number of elements in array: ");
    scanf("%d", &elementCount);
    printf("Enter %d numbers \n", elementCount);
    
    for(counter = 0; counter < elementCount; counter++){
        scanf("%d", &inputArray[counter]);
    }
    /* Initializing maxElement and maxElementPosition 
     * with first element of inputArray and zero 
     * respectively
     */
    maxElement = inputArray[0];
    maxElementPosition = 0;
    
    /* Compare each element of input array with maxElement, and
       if it is greater than maxElement update maxElement and 
       maxElementPosition
    */
    for(counter = 1; counter < elementCount; counter++){
        if(inputArray[counter] > maxElement){
            maxElement = inputArray[counter];
            maxElementPosition = counter;
        }
    }
    /* Print Maximum element and it's position in array */
    printf("Maximum element in array is %d at index %d",
        maxElement, maxElementPosition);
    
    getch();
    return 0;
}

Programutgang
Enter number of elements in array: 5
Enter 5 numbers
3 0 9 6 1
Maximum element in array is 9 at index 2

C Program for å finne maksimale elementer i en matrise ved å dele og hersk

Nedenfor deler programmet dette problemet i to underoppgaver ved å dele innmatrisen i to like halvparter. Deretter beregner den maksimumselementene for begge underarrayene ved å rekursivt kalle seg selv for venstre og høyre undermatrise.
For å finne maksimumselementet for hele arrayen tar det maksimum leftMax og rightMax.

/*
* C Program to find maximum element in an array
*/
#include <stdio.h>
#include <conio.h>

int getMax(int num1, int num2);
int getMaxElement(int *array, int leftIndex, int rightIndex);

int main(){
    int maxElement, inputArray[500];
    int elementCount, counter;
    
    printf("Enter number of elements in array: ");
    scanf("%d", &elementCount);
    printf("Enter %d numbers \n", elementCount);
    
    for(counter = 0; counter < elementCount; counter++){
        scanf("%d", &inputArray[counter]);
    }
    maxElement = getMaxElement(inputArray, 0, elementCount-1);
    printf("Maximum element in array is %d ", maxElement);
    
    getch();
    return 0;
}

/*
* Function to find max of two number 
*/
int getMax(int num1, int num2){
    if(num1 >= num2)
        return num1;
    else 
        return num2;    
}

/*
*  Function to find maxElement of Array using Divide and Conquer
*/
int getMaxElement(int *array, int leftIndex, int rightIndex){
    int midIndex, leftMax, rightMax;
    if(NULL == array){
        printf("Invalid Input");
        return -1;
    }
    /*  exit condition, for sub-Array of size 1  */
    if(leftIndex == rightIndex)
        return array[leftIndex];
    /* Divide input array in two equal half 
     * find max Element of left and right half of Array
     * return maximum of leftMax and rightMax
     */
    midIndex = (leftIndex + rightIndex) / 2;
    leftMax = getMaxElement(array, leftIndex, midIndex);
    rightMax = getMaxElement(array, midIndex+1, rightIndex);
    
    return getMax(leftMax, rightMax);
}

Programutgang
Enter number of elements in array: 6
Enter 6 numbers
7 2 5 1 1 9
Maximum element in array is 9