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.
- sammenlign med 15, min = 15
- sammenlign med 3, min = 3
- sammenlign med 22, min = 3
- sammenlign med 1, min = 1
- sammenlign med 4, min = 1
- 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;
}