En el algoritmo de la burbuja

El primer contacto algoritmo de ordenación de ordenamiento de burbuja, en primer lugar a mirar en lo que se llama el ordenamiento de burbuja, suponiendo un gran número de relativamente pesado, cuanto menor sea el número de la luz, por lo que cuando la comparación de los dos daría lugar a un gran número de abajo mientras que un número pequeño flotará;

Supongamos que un arr array [10] = {2, 1, 3, 5, 6, 4, 7, 9, 8, 10}, si tal un burbujeo de matriz no ordenada por algoritmo de ordenación, se introducirá una plazo denominado veces , si estamos en orden ascendente, a continuación, el primer viaje en docenas de comparación por parejas serían más de nueve veces, segundo viaje en comparación por parejas serían más de ocho veces, siendo así que, ¿esto diez será 9 veces el número de clasificación, comparación 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 tantas veces, que sabe tantas veces, pero no se utiliza, sólo escribirlo; sin sentido decir directamente sobre el código;

#include<stdio.h>
void bubble_sort(int arr[], int sz)
{
 int i = 0;
 int j = 0;
 for (i = 0; i < sz-1; i++)
 {
  for (j = 0; j <sz-1-i ; j++)
  {
   if (arr[j]>arr[j + 1])
   {
    int tmp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = tmp;
   }
  }
 }
}
void print_arr(int arr[], int sz)
{
 int i = 0;
 for (i = 0; i < sz; i++)
 {
  printf("%d ", arr[i]);
 }
 
}
int main()
{
 int arr[10] = { 2, 1, 3, 5, 6, 4, 7, 9, 8, 10 };
 int sz = sizeof(arr) / sizeof(arr[0]);
 print_arr(arr, sz);
 bubble_sort(arr, sz);
 printf("\n");
 print_arr(arr, sz);
 return 0;
}

Dicho código es todavía capaz de parte Optimizar; podemos pensar en esta forma de pensar que estamos completamente de acuerdo con el número de este grupo de conducta desordenada, pero si este grupo si el número de ordenado; un buen vistazo a este Código; otro código simplemente vacío bubble_sort sido modificado no ha cambiado;

void bubble_sort(int arr[], int sz)
{
 int i = 0;
 int j = 0;
 for (i = 0; i < sz-1; i++)
 {
  int flag = 1//假设有序
  for (j = 0; j <sz-1-i ; j++)
  {
   if (arr[j]>arr[j + 1])
   {
    int tmp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = tmp;
    flag = 0;//无序
   }
  }
  if(flag == 1)
  {
  return;
  }
 }
}

Esto mejora la eficiencia del código;

Publicado 20 artículos originales · ganado elogios 9 · visitas 913

Supongo que te gusta

Origin blog.csdn.net/weixin_44915811/article/details/90110350
Recomendado
Clasificación