Bästa svaret
Bubblesortering
Bubblesortering är den enklaste sorteringsalgoritmen som fungerar genom att byta intilliggande element upprepade gånger om de är i fel ordning.
Exempel: Första passet: ( 5 1 4 2 8) -> ( 1 5 4 2 8), Här jämför algoritmen de två första elementen och byter sedan 5> 1. (1 5 4 2 8) -> (1 4 5 2 8), Byt sedan 5 > 4 (1 4 5 2 8) -> (1 4 2 5 8), Byt sedan 5> 2 (1 4 2 5 8 ) -> (1 4 2 5 8 ), Eftersom dessa element redan är i ordning (8> 5) byter algoritmen dem inte.
Andra passet: ( 1 4 2 5 8) -> ( 1 4 2 5 8) (1 4 2 5 8) -> (1 2 4 5 8), Byt sedan 4> 2 (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 ) Nu är arrayen redan sorterad, b ut vår algoritm vet inte om den är klar. Algoritmen behöver ett hela -pass utan något -byte för att veta att det är sorterat.
Tredje passet: ( 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 )
Exempel
// 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;
}
Tack.
Svar
För mig är den enklaste sorteringsalgoritmen valssortering, mycket grundläggande och förståelig.När du kör en sorteringsalgoritm kommer du att jämföra alla värden med det första elementet, när värdet du hittar är lägre än det första elementet kommer du att ändra elementet med det lägsta värdet, och det fortsätter så här.
Låt mig ge dig ett exempel.
Array => [15,3,22,1,4,14]
min = 15.
- jämför med 15, min = 15
- jämför med 3, min = 3
- jämför med 22, min = 3
- jämför med 1, min = 1
- jämför med 4, min = 1
- jämför med 14, min = 1
Nu har du hittat elementet min (första\_index). Du måste byta ut det första elementet och min-elementets platser och sedan fortsätta tills du når det sista elementet.
Exempel C-kod:
#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;
}