Jaki jest najłatwiejszy algorytm sortowania do zaimplementowania?


Najlepsza odpowiedź

Sortowanie bąbelkowe

Sortowanie bąbelkowe to najprostszy algorytm sortowania, który działa poprzez wielokrotne zamienianie sąsiednich elementów, jeśli są w złej kolejności.

Przykład: Pierwszy bilet: ( 5 1 4 2 8) -> ( 1 5 4 2 8), Tutaj algorytm porównuje pierwsze dwa elementy i zamienia od 5> 1. (1 5 4 2 8) -> (1 4 5 2 8), Zamień od 5 > 4 (1 4 5 2 8) -> (1 4 2 5 8), Zamień od 5> 2 (1 4 2 5 8 ) -> (1 4 2 5 8 ), ponieważ te elementy są już w kolejności (8> 5), algorytm ich nie zamienia.

Druga karta: ( 1 4 2 5 8) -> ( 1 4 2 5 8) (1 4 2 5 8) -> (1 2 4 5 8), Zamień od 4> 2 (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 ) Teraz tablica jest już posortowana, b ut nasz algorytm nie wie, czy został zakończony. Algorytm potrzebuje jednej całej przepustki bez żadnej zamiany, aby wiedzieć, że jest posortowana.

Trzecia karta: ( 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 )

Przykład

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

}

Dziękuję.

Odpowiedź

Dla mnie najłatwiejszym algorytmem sortowania jest sortowanie przez wybór, bardzo prosty i zrozumiały.Kiedy uruchomisz algorytm sortowania przez wybór, porównasz wszystkie wartości z pierwszym elementem, gdy znaleziona wartość jest niższa niż pierwszy element, zmienisz element o najniższej wartości i tak będzie dalej.

Podam przykład.

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

min = 15.

  1. porównaj z 15, min = 15
  2. porównaj z 3, min = 3
  3. porównaj z 22, min = 3
  4. porównaj z 1, min = 1
  5. porównaj z 4, min = 1
  6. porównaj z 14, min = 1

Teraz znalazłeś element min (first\_index). Musisz zamienić pierwszy element i miejsca elementu min, a następnie kontynuować, aż dojdziesz do ostatniego elementu.

Przykładowy kod C:

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

}

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *