Wat is het gemakkelijkste sorteeralgoritme om te implementeren?


Beste antwoord

Bubble Sort

Bubble Sort is het eenvoudigste sorteeralgoritme dat werkt door de aangrenzende elementen herhaaldelijk om te wisselen als ze in de verkeerde volgorde staan.

Voorbeeld: Eerste doorgang: ( 5 1 4 2 8) -> ( 1 5 4 2 8), Hier vergelijkt het algoritme de eerste twee elementen en wisselt ze sinds 5> 1. (1 5 4 2 8) -> (1 4 5 2 8), ruilen sinds 5 > 4 (1 4 5 2 8) -> (1 4 2 5 8), omwisselen sinds 5> 2 (1 4 2 5 8 ) -> (1 4 2 5 8 ), aangezien deze elementen al in orde zijn (8> 5), verwisselt het algoritme ze niet.

Tweede doorgang: ( 1 4 2 5 8) -> ( 1 4 2 5 8) (1 4 2 5 8) -> (1 2 4 5 8), omwisselen sinds 4> 2 (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 ) Nu is de array al gesorteerd, b ut ons algoritme weet niet of het is voltooid. Het algoritme heeft één hele pas nodig zonder enige -wissel om te weten dat deze is gesorteerd.

Derde doorgang: ( 1 2 4 5 8) -> ( 1 2 4 5 8) (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 )

Voorbeeld

// C program for implementation of Bubble sort

#include

void *xp, int *yp)

{

int temp = *xp;

*xp = *yp;

*yp = temp;

}

// A function to implement bubble sort

void bubbleSort(int arr[], int n)

{

int i, j;

for (i = 0; i < n-1; i++)

// Last i elements are already in place

for (j = 0; j < n-i-1; j++)

if (arr[j] > arr[j+1])

swap(&arr[j], &arr[j+1]);

}

/* Function to print an array */

void printArray(int arr[], int size)

{

int i;

for (i=0; i < size; i++)

printf("\%d ", arr[i]);

printf("n");

}

// Driver program to test above functions

int main()

{

int arr[] = {66, 4, 25, 1, 22, 81, 90};

int n = sizeof(arr)/sizeof(arr[0]);

bubbleSort(arr, n);

printf("Sorted array: \n");

printArray(arr, n);

return 0;

}

Bedankt.

Antwoord

Voor mij is het gemakkelijkste sorteeralgoritme selectie sorteren, erg basaal en begrijpelijk.Als je het selectie-sorteeralgoritme uitvoert, ga je alle waarden vergelijken met het eerste element, als de waarde die je vindt lager is dan het eerste element, verander je het element met de laagste waarde, en het zal zo doorgaan.

Laat me je een voorbeeld geven.

Array => [15,3,22,1,4,14]

min = 15.

  1. vergelijk met 15, min = 15
  2. vergelijk met 3, min = 3
  3. vergelijk met 22, min = 3
  4. vergelijk met 1, min = 1
  5. vergelijk met 4, min = 1
  6. vergelijk met 14, min = 1

Nu heb je het min (first\_index) -element gevonden. Je moet het eerste element en de plaatsen van het min-element vervangen, en dan doorgaan tot je het laatste element bereikt.

Voorbeeld C-code:

#include

void printArray(int arr[], int n) {

//use this function to print array

for (int i = 0; i < n; i++)

printf("\%d, ", arr[i]);

}

void sortArray(int arr[], int n) {

int min\_index = 0;

int temp = 0;

for (int i = 0; i < n; i++) {

min\_index = i;

for (int j = i; j < n; j++) {

//compare min index"s element with new j"s element

//if you want descending sort you can change the binary

//operator > to < .

if (arr[min\_index] > arr[j]) min\_index = j;

}

//change min index"s element and i. element

temp = arr[min\_index];

arr[min\_index] = arr[i];

arr[i] = temp;

}

printArray(arr,n);

}

int arr[] = { 100,5,11,1,22,31,4,2,3 }; //initialize array

printArray(arr,9); //print unsorted array

sortArray(arr,9); //sort array then print it

return 0;

}

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *