Заблокирован
|
|
1 | |
В классе Array есть метод Sort. Можете ли вы улучшить этот метод, если значения в массиве часто повторяются24.06.2014, 16:17. Показов 1392. Ответов 7
Метки нет (Все метки)
Как то проходил собеседование в одну конторку.Задали логическую задачку которую не смог решить.Может кто-нить знает .
Вот задача: В классе Array есть метод Sort.Можете ли вы улучшить этот метод ,если значения в массиве часто повторяются. Вот такая задачка.
0
|
24.06.2014, 16:17 | |
Ответы с готовыми решениями:
7
Array.Sort() Какие параметры передать в этот метод? В классе OnlyData написать метод, который выводит значение переменной i и вызвать этот метод в том же классе Есть метод класса внутри , есть проверка. Если условие сходится то метод должен выдать указатель, иначе булевую переменную Обязательно ли описывать функцию с override, если в базовом классе уже есть метод с virtual? |
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
|
|
24.06.2014, 16:41 | 2 |
навскидку. если не ошибаюсь, Array.Sort() реализует QuickSort. по сути, надо знать разные методы сортировки и их особенности. явно какой то метод сортировки при наличии одинаковых значений в массиве сортирует быстрее. собственно надо было по идее его и реализовтаь
0
|
17678 / 12864 / 3365
Регистрация: 17.09.2011
Сообщений: 21,132
|
|
25.06.2014, 13:03 | 3 |
Там используется комбинированный метод в зависимости от размера массива и глубины рекурсии при быстрой сортировке.
Но по умолчанию — да, используется быстрая сортировка. ts-alan, если массив состоит из небольшого количества часто повторяющихся элементов, то эффективнее будет сделать один полный обход массива чтобы выделить уникальные элементы и количество их повторений, потом отсортировать эти уникальные элементы (чем меньше массив, тем быстрее сортировка), после чего скопировать каждый из этих элементов необходимое количество раз в исходный массив в порядке возрастания.
1
|
Master of Orion
|
||||||
25.06.2014, 18:07 | 5 | |||||
Ну как-то так
Добавлено через 2 минуты kolorotur, там всегда используется Introsort сортировка, быстрая - только на небольшой глубине рекурсии, как часть этой Introsort
0
|
17678 / 12864 / 3365
Регистрация: 17.09.2011
Сообщений: 21,132
|
|
25.06.2014, 18:16 | 6 |
Дык я про нее и говорил
Наверное, все-таки единичку. Или откат?!
0
|
17678 / 12864 / 3365
Регистрация: 17.09.2011
Сообщений: 21,132
|
|
25.06.2014, 18:36 | 8 |
Ай, в разоблачительном угаре не дошел до цикла!
Когда-то давно копался в исходниках .NET и как раз смотрел код сортировки. Из того, что запомнилось, там использовалось несколько алгоритмов: для небольших массивов то ли вставками, то ли слиянием, для остальных дефолтом быстрой с переходом в какой-то момент к сортировке кучей. Возможно, это был код не от Array.Sort, а от какого-нибудь линковского OrderBy, сейчас уже не помню
1
|
25.06.2014, 18:36 | |
25.06.2014, 18:36 | |
Помогаю со студенческими работами здесь
8
Если асинхронные методы вызывают другой метод, то этот другой метод тоже должен быть async? Метод для поиска локального минимума в классе Array Метод, который сортирует и печатает массив по длине строчки, без использования готовой функции Array.Sort В классе Array задайте метод add b , который будет добавлять к массиву почленно элементы массива... Как в классе Thread реализован вызов run(), если метод run() определён в АВТОРСКОМ классе? В классе Student определите метод InitAr (Метод должен быть статическим) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |