Hva er den enkleste sorteringsalgoritmen å implementere?


Beste svaret

Bubblesortering

Bubblesortering er den enkleste sorteringsalgoritmen som fungerer ved å bytte tilstøtende elementer gjentatte ganger hvis de er i feil rekkefølge.

Eksempel: Første pass: ( 5 1 4 2 8) -> ( 1 5 4 2 8), Her sammenligner algoritmen de to første elementene, og bytter siden 5> 1. (1 5 4 2 8) -> (1 4 5 2 8), Bytt siden 5 > 4 (1 4 5 2 8) -> (1 4 2 5 8), Bytt siden 5> 2 (1 4 2 5 8 ) -> (1 4 2 5 8 ), Nå som disse elementene allerede er i orden (8> 5), bytter ikke algoritme dem.

Andre pass: ( 1 4 2 5 8) -> ( 1 4 2 5 8) (1 4 2 5 8) -> (1 2 4 5 8), bytt siden 4> 2 (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 ) Nå er matrisen allerede sortert, b ut algoritmen vår vet ikke om den er fullført. Algoritmen trenger ett hele pass uten noe bytte for å vite at det er sortert.

Tredje pass: ( 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 )

Eksempel

// 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;

}

Takk.

Svar

For meg er den enkleste sorteringsalgoritmen valgsortering, veldig grunnleggende og forståelig.Når du kjører utvalgssorteringsalgoritme, skal du sammenligne alle verdier med det første elementet. Når verdien du finner er lavere enn det første elementet, vil du endre elementet med den laveste verdien, og det vil fortsette slik.

La meg gi deg et eksempel.

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

min = 15.

  1. sammenlign med 15, min = 15
  2. sammenlign med 3, min = 3
  3. sammenlign med 22, min = 3
  4. sammenlign med 1, min = 1
  5. sammenlign med 4, min = 1
  6. sammenlign med 14, min = 1

Nå har du funnet min (first\_index) -elementet. Du må erstatte det første elementet og min-elementets steder, og fortsett til du kommer til det siste elementet.

Eksempel C Kode:

#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;

}

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *