реклама на сайте
подробности

 
 
> перебрать массив по возрастанию побыстрее, как это сделать за n циклов AVR?
_Ivan_33
сообщение Feb 17 2010, 11:20
Сообщение #1


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



здравствуйте! есть массив на 32 элемента типа int
нужно поставить их в порядке возрастания микроконтроллером ATmega1280 с тактовой частотой 16 Мгц от кварца
успею ли я простым перебором, сранивая соседние числа и двигая их уложиться в 1100 мкс?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Feb 17 2010, 15:33
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Можно еще быстрее smile.gif. Только для этого надо сразу класть числа на нужное место, раздвигая ранее положенные. Типа того, как солдат ищет себе место в строю. Причем можно съэкономить циклы, если не сравнивать новое число со всеми прежде лежащими в массиве, а принимать во внимание, что этот массив всегда упорядочен. Т.е. солдат сначала тыкается в середину строя, сравнивая свой рост со стоящим в середине. Взависимости от этого сравнения, сразу отбрасывается половина ряда, с которой сравниваться нет необходимости. Дальше он тыкается в середину соответствующего полуряда, потом четвертьряда и т.д. В результате чего найдет свое место за не более log2(N) сравнений.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016