Vad är den enklaste sorteringsalgoritmen att implementera?


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.

  1. jämför med 15, min = 15
  2. jämför med 3, min = 3
  3. jämför med 22, min = 3
  4. jämför med 1, min = 1
  5. jämför med 4, min = 1
  6. 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;

}

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *