Advertisement
Kosty_Fomin

Untitled

Jul 5th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.09 KB | None | 0 0
  1. //XCODE
  2.  
  3. #include <iostream>
  4. #include <stdio.h>
  5. #include <cstdlib>
  6. #include <ctime>
  7. #include <climits>
  8.  
  9.  
  10. int e_c_c = 0;
  11. int i_c_c = 0;
  12. int n_o_s = 0;
  13.  
  14.  
  15. void ins_sort(long *mas,long n)
  16. {
  17.     int counter = 0;
  18.     for(int i = 1;i < n;i++){
  19.         for(int j = i; j > 0 && mas[j-1] > mas[j]; j --){
  20.             counter++;
  21.             long tmp = mas[j-1];
  22.             mas[j-1] = mas[j];
  23.             mas[j] = tmp;
  24.         }
  25.     }
  26.  
  27. }
  28.  
  29. void ins_binary_sort(long* mas, long n)
  30. {
  31.     long buf;
  32.     long left;
  33.     long right;
  34.     long aver;
  35.     for (long i = 1;  i < n; i++)
  36.         if (mas[i-1] > mas[i]){
  37.             buf = mas[i];
  38.             left = 0;
  39.             right = i-1;
  40.             do {
  41.                 aver = (left + right)/2;
  42.                 if  (mas[aver] < buf ) left = aver + 1;
  43.                 else  right = aver - 1;
  44.             } while (left <= right);
  45.             for (long j = i-1; j>=left; j--)
  46.                 mas[j+1] = mas[j];
  47.             mas[left] = buf;
  48.         }
  49. }
  50.  
  51.  
  52. void print_mas(long *mas,long n)
  53. {
  54.     std::cout << "Sorted mas: ";
  55.    
  56.     for (int i = 0; i < n; i++)
  57.     {
  58.         std::cout << mas[i] << " ";
  59.     }
  60. }
  61.  
  62.  
  63.  
  64.  
  65.  
  66. int main(int argc, const char * argv[]) {
  67.     long n;
  68.     bool ch;
  69.     bool per = false;
  70.     std::srand(std::time(0));
  71.    
  72.    
  73.     do
  74.     {
  75.         std::cout<<"Input N:";
  76.         std::cin>>n;
  77.        
  78.         if (std::cin.fail())
  79.         {
  80.             std::cin.clear();
  81.             std::cin.ignore(INT_MAX, '\n');
  82.         }
  83.     }
  84.     while(n <= 0);
  85.    
  86.    
  87.     do
  88.     {
  89.         std::cout<<"If you want random generation - input 1\n If you want hand-made generation - input 0\n";
  90.         std::cin>>ch;
  91.        
  92.        
  93.         if (std::cin.fail())
  94.         {
  95.             std::cin.clear();
  96.             std::cin.ignore(INT_MAX, '\n');
  97.         }
  98.     }
  99.     while(ch != 0 && ch != 1);
  100.    
  101.    
  102.     long* mas = new long[n];
  103.    
  104.     for(int i = 0; i<n; i++){
  105.         switch (ch) {
  106.             case 0:
  107.                 std::cin>>mas[i];
  108.                 if (std::cin.fail())
  109.                 {
  110.                     std::cin.clear();
  111.                     std::cin.ignore(INT_MAX, '\n');
  112.                 }
  113.                 break;
  114.             case 1:
  115.                 mas[i] = rand();
  116.                 break;
  117.             default:
  118.                 break;
  119.         }
  120.        
  121.     }
  122.    
  123.    
  124.    
  125.     for (int i = 0; i<n; i++) {
  126.         std::cout<<mas[i]<<" ";
  127.     }
  128.     std::cout<<"\n";
  129.    
  130.     for (int i = 0; i < n; i++) {
  131.         for (int j = 0; j < n-i-1; j++) {
  132.           if (mas[j] > mas[j+1]) {
  133.               long b = mas[j];
  134.                mas[j] = mas[j+1];
  135.                mas[j+1] = b;
  136.                per = true;
  137.             }
  138.         }
  139.        
  140.         if(per==false){
  141.             break;
  142.         }
  143.     }
  144.    
  145.     std::cout<<"Your array:";
  146.     for (int i = 0; i<n; i++) {
  147.         std::cout<<mas[i]<<" ";
  148.     }
  149.    
  150.     ins_sort(mas, n);
  151.    
  152.     print_mas(mas, n);
  153.    
  154.     ins_binary_sort(mas, n);
  155.    
  156.     print_mas(mas, n);
  157.    
  158.     delete[] mas;
  159.     return 0;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement