Advertisement
dllbridge

Untitled

Dec 8th, 2021
1,127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.64 KB | None | 0 0
  1.  
  2. // dllbridge@gmail.com
  3. // 2021_December_08
  4. // Bubble_sorting
  5.  
  6. #include   <stdio.h>
  7.  
  8. int arr[99] =  { 17, 5, 0, 777, 11, -2, 198, -3, 7, 3 };        //  Этот массив требуется сортировать по возрастанию
  9.  
  10. int       length = 10,                                                                //  Кол-во элементов в массиве
  11.      swap_counter = 0;                            //                    Суммарное число перестановок, при сортировке    
  12.  
  13. void bubble_sorting(int *a, int size);            //                                            Сортировка пузырьком
  14. void           show(int *a, int size);            //                             Показать на экране элементы массива
  15. void           swap(int &a, int   &b);            //                       Меняет местами содержимое двух переменных
  16.  
  17. //                           Точка входа в программу
  18. ////////////////////////////////////////////////////
  19. int main()                                        //
  20. {
  21.    
  22.     show(arr, 10);
  23.    
  24.     bubble_sorting(arr, 10);
  25.     printf("- - - - - - - - - - - - - - - - - - - - - - -\n");
  26.     printf("In the sorting process, it took %d permutations. ", swap_counter);
  27.    
  28. return 0;  
  29. }
  30.  
  31. //                               Сортировка пузырьком
  32. /////////////////////////////////////////////////////                                            
  33. void bubble_sorting(int *a,                        //                                Передаёте адрес элемента массива,
  34.                                                    //              с которого начинаете упорядочивание по возрастанию.
  35.                     int size)                      //       И передаёте кол-во элементов, которые будут отсортированы.                                                    
  36. {  
  37.        
  38.      int    i,                //  Счётчик в цикле  //
  39.          Flag;              //  флаг перестановки  //
  40.    
  41.      do { Flag = 0;
  42.          
  43.           for(i = 0; i < size - 1; i++)
  44.           {
  45.              if(a[i] > a[i+1])
  46.              {
  47.                 swap(a[i], a[i+1]);
  48.              
  49.                 show(arr, 10);                     //                                       Эта строка необязательна
  50.                                                    //                         Нужна для отслеживания хода сортировки  
  51.                 Flag = 1;                          //                     Была перестановка. Значит цикл продолжится  
  52.              }
  53.           }        
  54.           printf("\n");
  55.          
  56.      } while(Flag == 1);                           //                          Если (Flag == 1), то цикл повторяется
  57. }
  58.  
  59. //                Показать на экране элементы массива
  60. /////////////////////////////////////////////////////                            
  61. void show(int *a, int size)                        //
  62. {
  63.      int i = 0;
  64.    
  65.      for(; i < size; i++) printf("%2d, ", a[i]);
  66.      
  67.      printf("\n");
  68. }
  69.  
  70.  
  71. //           Меняет местами содержимое двух переменных
  72. //////////////////////////////////////////////////////                      
  73. void swap(int &a, int &b)                           //
  74. {
  75.    
  76.      int buf = a;
  77.      a = b;
  78.      b = buf;
  79.      
  80.      swap_counter ++;                               //                                    Ещё одна (+1) перестановка
  81. }
  82.  
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement