Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Линейный выбор с подсчетом





 

Для сортировки элементов исходного вектора А размерности n, нужно сформировать вектор счетчиков S размерности n, каждый элемент которого будет показывать, в какой позиции должен стоять соответствующий элемент вектора А в упорядоченном списке.

На первом этапе в вектор счетчиков заносятся единицы. Для формирования вектора счетчиков нужно n -1 раз просмотреть элементы исходного вектора A.

При первом просмотре для первого элемента вектора A подсчитывается количество меньших элементов во всем векторе и это количество заносится в счетчик первого элемента, в счетчики элементов, больших первого, добавляются единицы.

При втором просмотре первый элемент вектора A исключается из рассмотрения и для второго элемента в оставшемся векторе подсчитывается количество меньших элементов (это количество заносится в счетчик второго элемента), в счетчики больших элементов добавляются единицы, и.т.д.

Перемещая элементы исходного вектора A в полученный вектор B в соответствии со значениями вектора счетчиков S, получим упорядоченный исходный вектор B.

Просмотр Исходный вектор А Вектор счетчиков S
1-ый 2 4 8 5 6 1 1 1 1 1 1 1 + 1 1 1 1 1 2 2 2 2 2 1
2-ой 2 4 8 5 6 1 2 2 2 2 2 1 + 1 1 1 1 2 3 3 3 3 1
3-ий 2 4 8 5 6 1 2 3 3 3 3 1 + 3 2 3 6 3 3 1
4-ый 2 4 8 5 6 1 2 3 6 3 3 1 + 1 1 2 3 6 4 4 1
5-ый 2 4 8 5 6 1 2 3 6 4 4 1 + 1 2 3 6 4 5 1

 

Таким образом, сформированный вектора счетчиков показывает, что первый элемент вектора A должен стоять в упорядоченном списке на втором месте, второй элемент вектора A – на третьем, третий элемент – на последнем и т.д.

For i:=1 to n do {инициируем вектор счетчика}

S[i]:=1;

For i:=1 to n-1 do {формируем вектора счетчика}

Begin

k:=0; {количество меньших элементов для i-го элемента}

For j:=i+1 to n do

If A[i]<A[j] then S[j]:=S[j]+1

{в счетчики больших элементов добавляем единицы}

else k:=k+1;

S[i]:=S[i]+k;

end;

{формируем вектор B в соответствии со значениями вектора счетчика}

For i:=1 to n do

Begin

r:=S[i];

B[r]:=A[i];

end;

Date: 2015-10-19; view: 290; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию