Care este cel mai simplu algoritm de sortare de implementat?


Cel mai bun răspuns

Sortare cu bule

Sortarea cu bule este cel mai simplu algoritm de sortare care funcționează schimbând în mod repetat elementele adiacente dacă acestea sunt în ordine greșită.

Exemplu: Prima trecere: ( 5 1 4 2 8) -> ( 1 5 4 2 8), Aici, algoritmul compară primele două elemente și swaps de la 5> 1. (1 5 4 2 8) -> (1 4 5 2 8), swap de la 5 > 4 (1 4 5 2 8) -> (1 4 2 5 8), swap din 5> 2 (1 4 2 5 8 ) -> (1 4 2 5 8 ), Acum, deoarece aceste elemente sunt deja în ordine (8> 5), algoritmul nu le schimbă.

A doua trecere: ( 1 4 2 5 8) -> ( 1 4 2 5 8) (1 4 2 5 8) -> (1 2 4 5 8), swap din 4> 2 (1 2 4 5 8) -> (1 2 4 5 8) (1 2 4 5 8 ) -> (1 2 4 5 8 ) Acum, matricea este deja sortată, b algoritmul nostru nu știe dacă este finalizat. Algoritmul are nevoie de o întreagă trecere fără orice swap pentru a ști că este sortat.

A treia trecere: ( 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 )

Exemplu

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

}

Mulțumesc.

Răspuns

Pentru mine, cel mai simplu algoritm de sortare este sortarea de selecție, foarte de bază și ușor de înțeles.Când rulați algoritmul de sortare a selecției, veți compara toate valorile cu primul element, atunci când valoarea pe care o găsiți este mai mică decât primul element, veți schimba elementul cu cea mai mică valoare și va continua astfel.

Permiteți-mi să vă dau un exemplu.

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

min = 15.

  1. comparați cu 15, min = 15
  2. comparați cu 3, min = 3
  3. compară cu 22, min = 3
  4. comparați cu 1, min = 1
  5. comparați cu 4, min = 1
  6. comparați cu 14, min = 1

Acum ați găsit elementul min (first\_index). Trebuie să înlocuiți primul element și locurile elementului min, apoi continuați până ajungeți la ultimul element.

Exemplu C Cod:

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

}

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *