fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define N 100000 // 10000 3-5 сек; 100 000 1 мин 30 сек
  4. int Mass[N];
  5. void determination(void);
  6. void shaker(void);
  7. void printing(void);
  8.  
  9. int main()
  10. {
  11.  
  12. determination();
  13. //printing();
  14. shaker();
  15. printing();
  16.  
  17. return 0;
  18. }
  19.  
  20. void determination(void)//функция присвоения значений массиву
  21. {
  22. for (int i = 0; i <= (N - 1); i++)
  23. {
  24. Mass[i] = rand() % (N * 5);
  25. }
  26.  
  27. }
  28.  
  29. void shaker(void)//функция упорядочения массива
  30. {
  31. int tmp = 0, high = 0, low = (N - 1);
  32. while (high < low)
  33. {
  34. for (int i = high; i < low; i++)//двигаемся сверху вниз
  35. {
  36. if (Mass[i] > Mass[i + 1]) //если текущее значение больше
  37. {
  38. tmp = Mass[i]; //следующего меняем их местами
  39. Mass[i] = Mass[i + 1]; //(двигаем его вниз)
  40. Mass[i + 1] = tmp; //
  41.  
  42. }
  43. }
  44. low--;//обратите внимание, что нижняя граница поднимается
  45. //вверх (если сделать наоборот, ,,,,)
  46. for (int j = low; j > high; j--)//двигаемся снизу вверх
  47. {
  48. if (Mass[j] < Mass[j - 1]) //если текущее значение меньше
  49. {
  50.  
  51. tmp = Mass[j]; //следующего меняем их местами
  52. Mass[j] = Mass[j - 1]; //(двигаем его вверх)
  53. Mass[j - 1] = tmp; //
  54.  
  55. }
  56. }
  57. high++;
  58. }
  59.  
  60. }
  61.  
  62. void printing(void)//функция вывода массива на экран
  63. {
  64. for (int i = 0; i <= (N - 1); i++)
  65. {
  66. printf("%d\t%d\n", i + 1, Mass[i]);
  67. }
  68. }
Time limit exceeded #stdin #stdout 5s 4384KB
stdin
Standard input is empty
stdout
Standard output is empty