fork download
  1. #include <chrono> // Включване на библиотеката за измерване на време с висока точност.
  2. #include <iostream>
  3.  
  4. using namespace std; // Използване на стандартното именно пространство, което позволява използването на общи функции без да указваме std::.
  5. using namespace chrono; // Използване на chrono именно пространство за лесен достъп до функции за време.
  6.  
  7. // Прототипи на функциите за сортиране, които се дефинират по-надолу в кода.
  8. void bubbleSort(int arr[], int n); // Прототип на функцията за сортиране с Bubble Sort.
  9. void insertionSort(int arr[], int n); // Прототип на функцията за сортиране с Insertion Sort.
  10.  
  11. int main() {
  12. cout << "vavedi 10 chisla: "; // Изход на екран за инструкция към потребителя.
  13. const int N = 10; // Декларация на променлива за броя елементи в масива.
  14.  
  15. int arr[N]; // Деклариране на масив с фиксиран размер N.
  16.  
  17. for (int i = 0; i < N; i++) {
  18. cin >> arr[i]; // Вход от потребителя за всеки елемент на масива.
  19. }
  20.  
  21. int arrCopy[N]; // Деклариране на копие на масива за да се използва от втория алгоритъм за сортиране.
  22. copy(arr, arr + N, arrCopy); // Копиране на стойностите от оригиналния масив в копието.
  23.  
  24. // Измерване на времето за Bubble Sort
  25. auto start = high_resolution_clock::now(); // Записване на текущото време преди започване на сортирането с Bubble Sort.
  26. bubbleSort(arr, N); // Изпълнение на Bubble Sort.
  27. auto end = high_resolution_clock::now(); // Записване на времето след приключване на сортирането с Bubble Sort.
  28.  
  29. // Измерване на изминалото време в наносекунди.
  30. auto bubbleSortTime = duration_cast<nanoseconds>(end - start).count();
  31.  
  32. // Показване на времето за Bubble Sort.
  33. cout << "Bubble Sort time: " << bubbleSortTime << " nanosec." << endl;
  34.  
  35. // Измерване на времето за Insertion Sort
  36. start = high_resolution_clock::now(); // Записване на текущото време преди започване на сортирането с Insertion Sort.
  37. insertionSort(arrCopy, N); // Изпълнение на Insertion Sort.
  38. end = high_resolution_clock::now(); // Записване на времето след приключване на сортирането с Insertion Sort.
  39.  
  40. // Измерване на изминалото време в наносекунди.
  41. auto insertionSortTime = duration_cast<nanoseconds>(end - start).count();
  42.  
  43. // Показване на времето за Insertion Sort.
  44. cout << "Insertion Sort time : " << insertionSortTime << " nansec." << endl;
  45.  
  46. // Връщане на 0 като статус за успешно завършване на програмата.
  47. return 0;
  48. }
  49.  
  50. // Дефиниция на функцията за Bubble Sort
  51. void bubbleSort(int arr[], int n) {
  52. for (int i = 0; i < n - 1; i++) { // Външен цикъл през всички елементи освен последния.
  53. for (int j = 0; j < n - i - 1; j++) { // Вътрешен цикъл през масива до достигане на сортираната част.
  54. if (arr[j] > arr[j + 1]) { // Сравняване на текущия със следващия елемент.
  55. swap(arr[j], arr[j + 1]); // Размяна ако текущият елемент е по-голям от следващия.
  56. }
  57. }
  58. }
  59. }
  60.  
  61. // Дефиниция на функцията за Insertion Sort
  62. void insertionSort(int arr[], int n) {
  63. for (int i = 1; i < n; i++) { // Обхождане на всички елементи от втория до последния.
  64. int key = arr[i]; // Запазване на текущия елемент като ключ.
  65. int j = i - 1; // Начален индекс за сравнение.
  66. while (j >= 0 && arr[j] > key) { // Докато не се стигне началото на масива или не се намери по-малък елемент.
  67. arr[j + 1] = arr[j]; // Преместване на по-големия елемент нагоре в масива.
  68. j--; // Намаляване на индекса за обхождане назад.
  69. }
  70. arr[j + 1] = key; // Вмъкване на ключа на правилното място.
  71. }
  72. }
  73.  
Success #stdin #stdout 0.01s 5272KB
stdin
1 2 3 4 5 6 7 8 9 10
stdout
vavedi 10 chisla: Bubble Sort time: 382 nanosec.
Insertion Sort time : 165 nansec.