Was ist der am einfachsten zu implementierende Sortieralgorithmus?


Beste Antwort

Blasensortierung

Bubble Sort ist der einfachste Sortieralgorithmus, bei dem die benachbarten Elemente wiederholt ausgetauscht werden, wenn sie in falscher Reihenfolge vorliegen.

Beispiel: Erster Durchgang: ( 5 1 4 2 8) -> ( 1 5 4 2 8), Hier vergleicht der Algorithmus die ersten beiden Elemente und tauscht seit 5> 1. (1 5 4 2 8) -> (1 4 5 2 8), Swap seit 5 > 4 (1 4 5 2 8) -> (1 4 2 5 8), Swap seit 5> 2 (1 4 2 5 8 ) -> (1 4 2 5 8 ), Da diese Elemente bereits in Ordnung sind (8> 5), werden sie vom Algorithmus nicht ausgetauscht.

Zweiter Durchgang: ( 1 4 2 5 8) -> ( 1 4 2 5 8) (1 4 2 5 8) -> (1 2 4 5 8), Swap seit 4> 2 (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 ) Nun ist das Array bereits sortiert. b Unser Algorithmus weiß jedoch nicht, ob er abgeschlossen ist. Der Algorithmus benötigt einen ganzen Durchgang ohne Swap, um zu wissen, dass er sortiert ist.

Dritter Durchgang: ( 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 )

Beispiel

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

}

Danke.

Antwort

Für mich ist der einfachste Sortieralgorithmus die Auswahlsortierung, sehr einfach und verständlich.Wenn Sie einen Auswahlsortieralgorithmus ausführen, werden Sie alle Werte mit dem ersten Element vergleichen. Wenn der gefundene Wert niedriger als das erste Element ist, ändern Sie das Element mit dem niedrigsten Wert und es wird so fortgesetzt.

Lassen Sie mich ein Beispiel geben.

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

min = 15.

  1. vergleiche mit 15, min = 15
  2. vergleiche mit 3, min = 3
  3. vergleiche mit 22, min = 3
  4. vergleiche mit 1, min = 1
  5. vergleiche mit 4, min = 1
  6. Vergleiche mit 14, min = 1

Jetzt haben Sie das Element min (first\_index) gefunden. Sie müssen das erste Element und die Stellen des min-Elements ersetzen und dann weitermachen, bis Sie das letzte Element erreichen.

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

}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.