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. P. >
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.
- vergleiche mit 15, min = 15
- vergleiche mit 3, min = 3
- vergleiche mit 22, min = 3
- vergleiche mit 1, min = 1
- vergleiche mit 4, min = 1
- 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;
}