По-перше, обидва алгоритми "працюють" для всіх входів. Питання стосується продуктивності.
Відповіді на це питання начебто хитрі. Один із способів сказати, що один алгоритм є асимптотично більш ефективним, ніж інший, якщо є якийсь (конкретний для проблеми) розмір вводу, такий, що для будь-якого більшого розміру вводу більш ефективний алгоритм буде робити менше "обчислювальних кроків", як правило, за допомогою якогось абстрактного виміру, наприклад кількість порівнянь.
Ідея відповідей полягає в тому, що асимптотично більш ефективний алгоритм все ще може вимагати більше кроків до цього розміру вводу. Це може бути так , що асимптотично більш ефективний алгоритм вимагає менше кроків для всіх входів, але він не повинен бути так і на практиці , як правило , не є. Тож краще формулювання "правильної" відповіді було б "Хстане кращим вибором для всіх входів, крім можливих невеликих входів ".
Формулювання все ще не таке велике. По-перше, набагато більше факторів вирішують, який алгоритм є "кращим вибором", але я скажу їм, що у цьому випадку наміри досить зрозумілі. Справжнє питання - "мале" та "велике". Один з моїх улюблених робіт - найшвидший і найкоротший алгоритм для всіх чітко визначених проблем . У цій роботі описаний алгоритм, який дає будь-яку специфікацію функції, і доказ того, що вона може бути обчислена в поліноміальний час, буде обчислювати цю функцію в оптимальній часовій складності в межах коефіцієнта5плюс додаток. Наприклад, якщо я надав йому реалізацію сортування бульбашок як специфікації функції та простого доказу, що це булоO (н2), це створило б алгоритм сортування, який був О ( п лгn ). Фактично, це створило б такий алгоритм5 c n lgn + o ( n lgn ) де cбув постійним фактором асимптотично * оптимального алгоритму. Це дивно. Є лише одна проблема: постійний термін - приховано вo ( n lgn )у цьому прикладі - робить алгоритм майже напевно абсолютно нездійсненним практично для будь-якої реальної проблеми. Що я маю на увазі під "цілком нездійсненним"? Я маю на увазі теплове загибель Всесвіту відбуватиметься багато разів до того, як алгоритм завершиться. Тим не менш, для відповідно "великих" входів це буде швидше, ніж сортування бульбашок. Моя думка, це майже напевно фізично неможливо записати "відповідним чином великий" вхід, не кажучи вже про обчислення на ньому.
У будь-якому випадку, як я б сказав правильну відповідь: "Х вимагає менше кроків, ніж Y на досить великих входах ". Це все ще трохи розпливчасто, оскільки існує декілька понять" крок ", які можна застосувати, і алгоритм може бути асимптотично більш ефективним за однією метрикою і менш ефективним іншим. Це формулювання дозволяє уникнути судження про значення" краще вибір "; Є багато причин вибирати асимптотично менш ефективні алгоритми або навіть менш ефективні алгоритми, коли задаються постійні фактори / умови, такі як ефективність кешу або простота реалізації.
* Тут є тонкість. Асимптотично оптимальний алгоритм може мати гірший постійний коефіцієнт,c, ніж асимптотично неоптимальний алгоритм. Я думаю, що це матиме найкраще значенняc для будь-якого асимптотично оптимального алгоритму, але можливо, що для витіснення невеликого посилення асимптотичної ефективності додається масивна складність, що значно збільшує постійний коефіцієнт.