ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

МоТно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ‚Π΅ΠΌ курсовых Ρ€Π°Π±ΠΎΡ‚ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ‚ 1 Π΄ΠΎ 19

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Π£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки, Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сортировки ΠΎΠ±ΠΎΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-сортировщиков Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΎΠΉ тСстовой Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ€Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ большой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, тСстовый Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ тСста Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ сортировался ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ миллисСкунды для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

МоТно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ‚Π΅ΠΌ курсовых Ρ€Π°Π±ΠΎΡ‚ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΡ‚ 1 Π΄ΠΎ 19 (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  • 1. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ свойств Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки
    • 1. 1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ понятия сортировки
    • 1. 2. ΠžΡ†Π΅Π½ΠΎΡ‡Π½Ρ‹Π΅ свойства Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки
    • 1. 3. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°
    • 1. 4. Быстрая обмСнная сортировка
  • 2. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки
    • 2. 1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
    • 2. 2. ВзаимодСйствиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
    • 2. 3. ВСстированиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. Код ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2. Код тСстов Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки

size (); ++i) {std:cout << v[i] << ' '; }std:cout << std: endl;}Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» массива ΠΈ Π΅Π³ΠΎ отсортированныС вСрсии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ сортировка ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. print_vector («unsorted», unsorted);print_vector («bubble», bubble->getVector ());print_vector («quick», quick->getVector ());Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΊΡ€Π°Π½ прСдставлСн Π½Π° Π ΠΈΡ. 6: Рис. 6 — Π’Ρ‹Π²ΠΎΠ΄ консоли послС запуска тСста Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировок.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки, Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сортировки ΠΎΠ±ΠΎΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-сортировщиков Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΎΠΉ тСстовой Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ€Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ большой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, тСстовый Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ тСста Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ сортировался ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ миллисСкунды для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки. Π’Π°ΠΊΠΈΠ΅ ΠΌΠ°Π»Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ€Ρ‹ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сортировок ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ большой ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ тСст Π±ΡƒΠ΄Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΈΠ· 100 случайных чисСл ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ±ΠΎΠΈΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ-сортировки 500 Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ€Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². ВСст Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° случайных чисСл: std:vector<int> generate_vector () {constint N = 100;std:vector<int> v (N);for (int i = 0; i<N; ++i) {v[i] = rand (); }return v;}Для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сортировки Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ пСрСмСнная tΡ‚ΠΈΠΏΠ° clock_t, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ clock () стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C. Π’ΠΎΠ³Π΄Π° сам тСст Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Sorter *bubble = new BubbleSorter ();Sorter *quick = new QuickSorter ();constint N = 500;longbubble_time = 0;longquick_time = 0;clock_t t;for (int i = 0; i<N; ++i) {std:vector<int> v = generate_vector ();bubble->setVector (v);quick->setVector (v);t = clock ();bubble->sort ();bubble_time += clock () — t;t = clock ();quick->sort ();quick_time += clock () — t;}std:cout << «bubble_time: «<< bubble_time << std: endl;std:cout << «quick_time: «<< quick_time << std: endl;Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния тСста прСдставлСн Π½Π° Π ΠΈΡ 7: Рис. 7 — Π’Ρ‹Π²ΠΎΠ΄ консоли послС запуска тСста Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировок (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ прСдставлСны Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…) Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ быстрой сортировки оказался быстрСС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 20 Ρ€Π°Π· Π½Π° Ρ‚Сстовой Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ ΠΈΠ· Ρ‚ысячи массивов тысячи случайных чисСл.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

.

Π’ Ρ…ΠΎΠ΄Π΅ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΎΠΉ сортировки, ΠΈΡ… ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ, отличия ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. По ΠΈΡ‚ΠΎΠ³Π°ΠΌ тСорСтичСского изучСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ ΠΈΡ‚ΠΎΠ³Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… тСстов ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹:

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° ΠΏΡ€ΠΎΡ‰Π΅ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π° Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° быстрой ΠΎΠ±ΠΌΠ΅Π½Π½ΠΎΠΉ сортировки:

Π’Π°Π±Π»ΠΈΡ†Π° 1 — ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ нСпустых строк Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки.

ПсСвдокодКод Π‘++Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ4−812Быстрая обмСнная сортировка1622.

ΠœΠ΅Ρ‚ΠΎΠ΄ быстрой ΠΎΠ±ΠΌΠ΅Π½Π½ΠΎΠΉ сортировки Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅Π½ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния, Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°. По ΠΈΡ‚ΠΎΠ³Π°ΠΌ тСстовых Π·Π°ΠΌΠ΅Ρ€ΠΎΠ²: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 20 Ρ€Π°Π· быстрСС. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ Ρ‚СстовоС врСмя исполнСния прСдставлСны Π² Π’Π°Π±Π»ΠΈΡ†Π΅ 2: Π’Π°Π±Π»ΠΈΡ†Π° 2 — Π₯арактСристики Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки.

Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

ВСстовоС врСмя исполнСния.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌO (n2)1946мс.

Быстрая обмСнная сортировкаO (nlogn) — O (n2)95мс.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° быстрой ΠΎΠ±ΠΌΠ΅Π½Π½ΠΎΠΉ сортировки большС пространствСнной слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС памяти Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ являСтся рСкурсивная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° быстрой сортировки, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ всС контСксты рСкурсивных Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π’Π°Π±Π»ΠΈΡ†Π° 3 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ пространствСнной слоТности ΠΎΠ±ΠΎΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²:

Π’Π°Π±Π»ΠΈΡ†Π° 3 — Π₯арактСристики пространствСнной слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌO (1)Быстрая обмСнная сортировкаO (nlogn)Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников.

Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹Π΅ источники.

ВикипСдия [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°. ;

https://ru.wikipedia.org/wiki/Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 16.

03.2018.

ВикипСдия [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. Алгоритм сортировки ;

https://ru.wikipedia.org/wiki/Алгоритм_сортировки ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 16.

03.2018.

ВикипСдия [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ ;

https://ru.wikipedia.org/wiki/Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°_ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 16.

03.2018.

ВикипСдия [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. Быстрая сортировка ;

https://ru.wikipedia.org/wiki/Быстрая_сортировка ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 16.

03.2018.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Код ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹classSorter{public:virtual void setVector (std:vector<int> unsorted) { v = unsorted; }virtualstd:vector<int> getVector () const {return v; }virtual void sort () = 0;protected:std:vector<int> v;};classBubbleSorter: public Sorter{public:virtual void sort () override {for (int i = 0; i<v.size ()-1; ++i) {int f = 0;for (int j = 0; j<v.size ()-i-1; ++j) {if (v[j] > v[j+1]) {std:swap (v[j], v[j+1]); f = 1; } }if (!f) {break; } } }};classQuickSorter: public Sorter{public:virtual void sort () override {if (v.empty ()) {return; } _quick_sort (v, 0, v. size ()-1); }private:void _quick_sort (std:vector<int> &v, int first, int last) {int mid = v[(first+last)/2]; int b = first;int e = last;while (b <= e) {while (v[b] < mid) { ++b; }while (v[e] > mid) { —e; }if (b <= e) {std:swap (v[b], v[e]); ++b; —e; } }if (e > first) { _quick_sort (v, first, e); }if (b < last) { _quick_sort (v, b, last);} }};ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π‘. ΠšΠΎΠ΄Ρ‚Π΅ΡΡ‚ΠΎΠ²Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈvoidprint_vector (std:string label, conststd: vector<int> &v) {std:cout << label << «: «;for (int i = 0; i<v.size (); ++i) {std:cout << v[i] << ' '; }std:cout << std: endl;}voidtest_correctness () {std:cout << «Test correctness» << std: endl;std:vector<int> unsorted = { 18, 4, 8, 0, 1, 10, 2, 5, 5 }; Sorter *bubble = new BubbleSorter ();bubble->setVector (unsorted);bubble->sort (); Sorter *quick = new QuickSorter ();quick->setVector (unsorted);quick->sort ();print_vector («unsorted», unsorted);print_vector («bubble», bubble->getVector ());print_vector («quick», quick->getVector ());delete bubble;delete quick;std:cout << std: endl;}std:vector<int> generate_vector () {constint N = 1000;std:vector<int> v (N);for (int i = 0; i<N; ++i) {v[i] = rand (); }return v;}voidtest_performance () {std:cout << «Test performance…» << std: endl; Sorter *bubble = new BubbleSorter (); Sorter *quick = new QuickSorter ();constint N = 1000;longbubble_time = 0;longquick_time = 0;clock_t t;for (int i = 0; i<N; ++i) {std:vector<int> v = generate_vector ();bubble->setVector (v);quick->setVector (v); t = clock ();bubble->sort ();bubble_time += clock () — t; t = clock ();quick->sort ();quick_time += clock () — t; }std:cout << «bubble_time: «<< bubble_time << std: endl;std:cout << «quick_time: «<< quick_time << std: endl;delete bubble;delete quick;}int main (){test_correctness ();test_performance ();return 0;}.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

  1. ВикипСдия [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс] Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°. — https://ru.wikipedia.org/wiki/Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 16.03.2018
  2. ВикипСдия [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. Алгоритм сортировки — https://ru.wikipedia.org/wiki/Алгоритм_сортировки ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 16.03.2018
  3. ВикипСдия [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ — https://ru.wikipedia.org/wiki/Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°_ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 16.03.2018
  4. ВикипСдия [Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ рСсурс]. Быстрая сортировка — https://ru.wikipedia.org/wiki/Быстрая_сортировка ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ 16.03.2018
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ
ΠšΡƒΠΏΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ

Π˜Π›Π˜