dllbridge

Untitled

Jun 27th, 2026
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.20 KB | None | 0 0
  1. int *pArr = 0;
  2.  
  3.  
  4. /////////////////////////////////////////////////////
  5. void swap(int n1, int n2)                          //
  6. {
  7.    
  8.    
  9.      int nBuf = pArr[n1];
  10.                 pArr[n1] = pArr[n2];  
  11.                            pArr[n2] = nBuf;
  12.    
  13. }
  14.  
  15.  
  16.  
  17. __declspec(dllexport)
  18. //////////////////////////
  19. void (*pf_swap)(int, int) = swap;
  20.  
  21. __declspec(dllexport)
  22. //////////////////////////
  23. int nAddress = (int)(&pf_swap);
  24.  
  25.  
  26. extern "C" __declspec(dllexport)                   //                                            Сортировка пузырьком    
  27. /////////////////////////////////////////////////////                                            
  28. void bubble_sorting(int *a, int size)              //                                Передаёте адрес элемента массива,
  29. {                                                  //              с которого начинаете упорядочивание по возрастанию.
  30.                                                    //       И передаёте кол-во элементов, которые будут отсортированы 
  31.      
  32.      pArr = a;                                     //          ! ! !  ДОБАВЬТЕ ТАКУЮ ЖЕ СТРОКУ В Вашу функцию.  ! ! !
  33.      
  34.        
  35.      int    i,                //  Счётчик в цикле  //
  36.          Flag;              //  флаг перестановки  //
  37.    
  38.      do { Flag = 0;
  39.          
  40.           for(i = 0; i < size - 1; i++)
  41.           {
  42.              if(a[i] > a[i+1])
  43.              {
  44.                 pf_swap(i, i+1);
  45.                                                    //                         Нужна для отслеживания хода сортировки  
  46.                 Flag = 1;                          //                     Была перестановка. Значит цикл продолжится  
  47.              }
  48.           }        
  49.          
  50.      } while(Flag == 1);                           //                          Если (Flag == 1), то цикл повторяется
  51. }
  52.  
  53.  
  54.  
  55.  
  56.  
  57. extern "C" __declspec(dllexport)                   //                                            Сортировка "Расчёска"
  58. /////////////////////////////////////////////////////                                            
  59. void comb_sorting(int *a, int size)                //                                Передаёте адрес элемента массива,
  60. {                                                  //              с которого начинаете упорядочивание по возрастанию.
  61.                                                    //       И передаёте кол-во элементов, которые будут отсортированы.
  62.                                                    
  63.      pArr = a;                                     //          ! ! !  ДОБАВЬТЕ ТАКУЮ ЖЕ СТРОКУ В Вашу функцию.  ! ! !    
  64.                                                
  65.      int step = size - 1;
  66.  
  67.      while(step >= 1)
  68.      {
  69.            
  70.          for(int i = 0; i + step < size; i++)      
  71.          {
  72.                    
  73.              if(a[i] > a[i+step])   pf_swap(i, i+step);
  74.                                        
  75.          } 
  76.          
  77.          step /= 1.2473309;
  78.      }      
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment