Можете да използвате статистиката на поръчката.
Рекурсивно разделят subarray на две части. Отделете малко на члена на subarray подкрепа (въртене), и да си поделят subarray че вече членът подкрепа и по-малки. Ако тези, които са включени повече от необходимото, рекурсивно обработват дясната ръка, ако по-малко - ляво, ако, както искате - отговорът е намерен.
разделяне алгоритъм (дял) е същата като тази в Quicksort (Quicksort) се използва, като разликата е, че само един клон е разделена.
Най-добрият и средно време - O (N), най-лошото - O (N ^ 2)
Методи за лечение са същите като тези на бързасортировка - правилният избор ос. Можете да изберете произволно.
Вижте също: K-ми Поръчка статистика, медианата.
Алгоритъмът се нарича quickselect.
Отговорено 10 Ноември '16 в 09:54
Имам решение:
Ако искате да получите максимален брой н, тогава ние се създаде опашка. След това минава през събирането, ако размерът на опашката е по-малко от предварително определен брой, а след това просто да добавите към текущия елемент. В противен случай, ние сравняваме с минимален елемент в опашката. Ако текущият елемент е по-голяма след това извадете минимум и да добавите нова.
Отговорено 10 Ноември '16 в 09:10
измисли, тук, които могат и ще помогне))
Отговорено 24 '16 ноември в 12:42
Трябваше да направя подредени флага? той винаги е вярно, но това е къде да бъдат проверени - Grundy 24 Ноември '16 в 12:45
По-добре е да се използва стандартен вид от патериците :) - gil9red 24 '16 ноември в 12:58
Свързани статии