Как узнать индексы наименьших 15 объектов внутри массива NSMutable и сохранить эти индексы в другом массиве Im, пишущий мою программу в объективе-c я пытался использовать для циклов, но пока не смог найти подходящий алгоритм.Как узнать индексы наименьших 15 объектов внутри массива NSMutable и сохранить эти индексы в другом массиве
ответ
Самый простой способ - отсортировать массив и выбрать первые 15 элементов.
Более эффективный подход заключается в том, чтобы проталкивать их через двоичную кучу с колпачком из 15 элементов. Первые 15 элементов массива идут прямо в кучу. Каждый последующий элемент заменяет наибольший элемент кучи, если он меньше.
CoreFoundation предоставляет CFBinaryHeap, который может быть использован для этой цели, хотя вы получите удовольствие от получения id
с входом и выходом void *
s. Также есть NDHeap, о котором я ничего не знаю (кроме того, что он существует и имеет целью реализовать двоичную кучу).
Моим преимуществом было бы использовать C++ std::priority_queue
, который тщательно протестирован и обрабатывает id
s просто отлично с небольшим уговором.
auto lt = [](id a, id b) { return (whatever means "a < b" to you); };
std::priority_queue<id, std::vector<id>, decltype(lt)> pq{lt};
for (id e in myarray) {
if (pq.size() == 15 && lt(e, pq.top()))
pq.pop();
if (pq.size() < 15)
pq.push(e);
}
NSMutableArray * top15 = [NSMutableArray arrayWithCapacity:15];
while (!pq.empty()) {
[top15 addObject:pq.top()];
pq.pop();
}
Для использования этого кода вам необходимо переименовать соответствующий .m файл в .mm.
спасибо за вашу помощь :) –
- 1. Объектно-ориентированные индексы ObjectiveC-NSMutable, хранящиеся в другом массиве
- 2. получить индексы n наименьших элементов в массиве
- 3. Как индексы печати из 10 наименьших значений в массиве
- 4. Как получить индексы объектов в массиве/JS
- 5. Получить индексы совпадающих точек в другом массиве
- 6. Отрицательные индексы в массиве
- 7. Swift: получить индексы наименьших элементов в двумерном массиве
- 8. Индексы перечисления и массива?
- 9. Индексы массива данных JqGrid
- 10. Как получить индексы для значений в массиве
- 11. Индексы PostgreSQL - эти избыточные?
- 12. Индексы наименьших значений N в векторе
- 13. Как сохранить индексы матрицы
- 14. индексы постоянного массива
- 15. Индексы массива полей объектов в MongoDB
- 16. индексы, индексы, индексы
- 17. NSMutable массива removeAllObject удаления объектов в другой NSMutable массива слишком
- 18. Найти индексы наименьших ближайших соседей между двумя списками в python
- 19. Показать даже индексы в массиве
- 20. Перестроить индексы массива Java
- 21. Удалить элементы и индексы из массива bash
- 22. Являются ли эти индексы взаимоисключающими?
- 23. Изменение индексы двухмерного массива
- 24. UITableViewCell надстрочные индексы и индексы
- 25. Отрицательные индексы F # в массиве
- 26. Длина массива и неопределенные индексы
- 27. Выясните индексы элементов массива
- 28. Возвращает индексы подматрицы в массиве
- 29. Underscore возвращает индексы объектов в массиве, где слово существует в предложениях внутри объектов
- 30. Как добавить текстовый текст в индексы массива?
Покажите нам свой код. – MrSmith42
Сортировка массива, индексы '0' ...' 14' будут соответствовать наименьшим 15 объектам. –
Какова конкретная проблема. Итерируйте через свой массив и сохраните индексы наименьших 15 значений, например. в упорядоченном массиве из 15 элементов. – MrSmith42