Hvad er den nemmeste sorteringsalgoritme at implementere?


Bedste svar

Bubblesortering

Bubblesortering er den enkleste sorteringsalgoritme, der fungerer ved gentagne gange at bytte de tilstødende elementer, hvis de er i forkert rækkefølge.

Eksempel: Første pas: ( 5 1 4 2 8) -> ( 1 5 4 2 8), Her sammenligner algoritme de to første elementer og bytter siden 5> 1. (1 5 4 2 8) -> (1 4 5 2 8), Byt siden 5 > 4 (1 4 5 2 8) -> (1 4 2 5 8), Byt siden 5> 2 (1 4 2 5 8 ) -> (1 4 2 5 8 ), Da disse elementer allerede er i orden (8> 5), bytter algoritme dem ikke.

Andet pas: ( 1 4 2 5 8) -> ( 1 4 2 5 8) (1 4 2 5 8) -> (1 2 4 5 8), Byt siden 4> 2 (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 ) Nu er arrayet allerede sorteret, b ut vores algoritme ved ikke, om den er afsluttet. Algoritmen har brug for et hele pas uden nogen swap for at vide, at det er sorteret.

Tredje pas: ( 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;

}

Tak.

Svar

For mig er den nemmeste sorteringsalgoritme valgsortering, meget grundlæggende og forståelig.Når du kører valgsorteringsalgoritme, skal du sammenligne alle værdier med det første element, når den værdi, du finder, er lavere end det første element, ændrer du elementet med den laveste værdi, og det fortsætter sådan.

Lad mig give dig 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

Nu har du fundet min (first\_index) elementet. Du skal erstatte det første element og min-elementets steder og derefter fortsætte, indtil du når det sidste element.

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;

}

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *