Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Создание прибыльного сайта для начинающих" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Интернет для Delphi-программиста
Информационный Канал Subscribe.Ru |
Интернет для Delphi программиста.Выпуск : № 23 Здравствуйте уважаемые подписчики рассылки "Интернет для Delphi программиста". Данная рассылка предназначена для всех кого интересует Delphi, здесь будут выкладываться ссылки на различные ресурсы интернета так или иначе связанные с Delphi: книги, исходники, программы... Изучайте Delphi один из лучших языков программирования!!! ЗАДАТЬ ВОПРОС : Правила
рассылки: Новые вопросы.
Ответы.
Статья: Алгоритмы Сортировки. Автор: Delist. Сайт: http://www.noil.pri.ee/ Алгоритмы Сортировки.Вопросы представления отсортированных данных всегда занимали умы программистов всех языков и концепций. За период развития программирования было разработано большое количество алгоритмов, способных из неупорядоченной кучи составить стройный ряд цифр.Все из существующих ныне способов сортировки отличаются друг от друга по скорости выполнения, понятности и длине кода, по красоте решения. Зачастую в код уже разработанного алгоритма вносятся какие-либо изменения и так возникает множество решений, некоторые и с которых мы и попробуем сейчас рассмотреть. Однако, следует отметить что изучение алгоритмов совсем не лёгкая задача, здесь требуется внимательное рассмотрение каждой строчки. Конечно если Вы воспользуетесь кнопками Ctrl+C и Ctrl+V Ваша программа не станет хуже работать, но на мой взгляд, нет ничего хуже когда программист сам до конца не понимает, как работает его программа. Итак, начнём. Сортировка выбором И начнём мы с сортировки выбором. Хотя этот алгоритм и не является самым быстрым, но я решил начать с него потому что, на мой взгляд он наиболее прост для понимания. Суть алгоритма состоит в том, что бы в исходном массиве найти наименьший элемент, а затем поменять местами первый элемент в списке с найденным. После того, находиться наименьший их оставшихся и меняется со вторым элементом. И так до тех пор пока весь список не будет отсортирован. Таким образом понадобиться N+(N-1)+(N-2)+...+1 или N*N проходов чтобы отсортировать список. procedure SellectionSort(var a: array of integer; min, max: Integer); var i, j, best_value, best_j: longint; begin for i:=min to max do begin best_value:=a[i]; best_j:=i; for j:=i+1 to max do begin if a[j]<best_value then begin best_value:=a[j]; best_j:=j; end; end; a[best_j]:=a[i]; a[i]:=best_value; end; end; Переменными min и mах можно ограничить область списка в которой, будет выполнена сортировка. Что бы отсортировать весь массив необходимо записать следующее SellectionSort(a, 0, high(a)); Сортировка вставкой
Это тоже предельно простой для понимания алгоритм. Идея в том что бы создать новый массив, а затем последовательно вставлять в новый массив элементы из старого массива, чтобы созданный массив был всё время упорядоченным. procedure BubbleSort(var a: array of integer; min, max: Integer); var i, j, tmp: integer; begin for i:=min to max do for j:=min to max-i do if A[j]>A[j+1] then begin {Обмен элементов} tmp:=A[j]; A[j]:=A[j+1]; A[j+1]:=tmp; end; end; Быстрая сортировка. При этом виде сортировке массив разбивается на две части, а затем рекурсивно вызывает сама себя для их сортировки. Притом элементы первой части меньше любого элемента второй части. Рассмотрим данный вид сортировке на примере: Если алгоритм вызывается для списка, который содержит нуль или один элемент, то подписок уже отсортирован и процедура заканчивается, в противном случае выбирается один элемент, относительно которого список разбивается на две части, в первый подписок идут элементы меньше выбранного, во второй больше. И затем, как уже было сказано, она рекурсивно вызывает сама себя для сортировки обои подсписков. procedure QuickSort(var a: array of integer; min, max: Integer); Var i,j,mid, tmp : integer; Begin if min<max then begin mid:=A[min]; i:=min-1; j:=max+1; while i<j do begin repeat i:=i+1; until A[i]>=mid; repeat j:=j-1; until A[j]<=mid; if i<j then begin tmp:=A[i]; A[i]:=A[j]; A[j]:=tmp; end; end; QuickSort(a, min,j); QuickSort(a, j+1,max); end; end; Стоит также заметить, что такой сортировкой лучше всего пользоваться для упорядочевания массивов элементы в которых следуют абсолютно, случайно. В то время как, если список практически упорядочен, разумнее будет использовать пузырьковую сортировку. К тому же если список достаточно длинный, то алгоритм вызовет глубокую рекурсию и возможно переполнение стёка и как следствие зависание или аварийный выход программы. Сортировка методом Шелла. Ещё один метод сортировки - это сортировка методом Шелла.Основная идея этого алгоритма заключается в том, чтобы в начале ycтpанить массовый беспорядок в массиве, сравнивая далеко стоящие друг от друга элементы. Как видно, интервал между сравниваемыми элементами постепенно уменьшается до единицы. Это означает, что на поздних стадиях сортировка сводится просто к перестановкам соседних элементов (если, конечно, такие перестановки являются необходимыми). procedure TForm1.SortShell(var a: array of real; N: Integer); var h:Variant; c:Boolean; g:Integer; i:Integer; j:Integer; tmp:Real; begin h:=1; g:=0; repeat h:=3*h+1 until (h>=n); if (h>n) then begin h:= h/3; g:=h; end; n:=n-1; repeat i:=g; repeat j:=i-g; c:=True; repeat if a[j]<=a[j+g] then begin c:=False; end else begin Tmp:=a[j]; a[j]:=a[j+g]; a[j+g]:=Tmp; end; j:=j-1 until not((j>=0)and(C)); i:=i+1 until not(i<=n); h:=g; h:=h/3; g:=h; until not(g>0); end; Заключение. В данной статье была предпринята попытка объяснить наиболее часто применяемые алгоритмы сортировки. Однако рассказать о всех аспектах реализации различных алгоритмов в одной статье довольно сложно, и статья получается перенасыщенная информацией, поэтому я решил разбить её на две части и сейчас вторая уже готовиться к выходу. В ней планируется рассказать о более специфических алгоритмах, сортировке не только цифр, но и слов, как русского так и английского языка, а также об обратном процессе сортировки - перемешивания. Удачи! P.S. Замечания, пожелания и дополнения к этой статье просим оставлять на форуме. Исходный код программы, которая использует методы сортировки описанные в этой статье можно скачать здесь. Компаненты: Позволяет делать анимационные эффекты для любых форм с использованием прозрачности. Это не компонент, а модуль, поэтому не требует установки в Delphi. Достаточно вызвать только одну функцию и все готово. Включает в себя небольшую тележку (17 шт.) симпотных визуальных эффектов, которые украсят появление и исчезновение любого окна. Работает быстро и без тормозов. Работает в Windows2000 и выше Этот компонент позволяет создавать различные эффекты над картинками. Можно взять две картинки и создать красивый визуальный переход между ними. Таким образом, легким движением руки делаются презентации с переходами между кадрами в виде визуальных эффектов. Можно использовать компонент и как способ создания эффектов в графическом редакторе или аниматоре (GIF или AVI). Справочник:
Если описывать весь этот справочник, то
не хватит и недели, поэтому лишь вкратце
перечислю, то что было включено в этой
версии. Исходники: Программа для чата 2х человек. Для соединения нужно ввести в опциях ip адрес того с кем нужно соединится и нажать "Применить и закрыть". Соединение произойдет автоматически после запуска программы на обоих компьютерах. Соединения не будет если ip адреса не установлены на обоих компьютерах, либо различаются каналы.Поддерживаемые фичи:
Самораспространяющаяся программа в локальной сети
Шатаясь по инету я как-то наткнулся на
описание какого-то злостного червя,
побившего рекорды по количеству
зараженных компьютеров. Почитав про
этого червя и червей вообще возникла
идея написать программу для своей
локальной сетки общежитий университета. Текстовый редактор для ускорения ввода
Основная идея - это использование
употребленных ранее слов, начинающихся
с тех же букв что вводятся в данный
момент. Joiner - соединение 2х файлов в один исполняемый
В инете полно программ для "склеивания",
используют их частенько те кто хотят
подсунуть троянчика или программу
такого рода. Нужны они в общем в тех
случаях когда необходимо "отвести
глаза". Когда передо мной встала такая
задача я не стал сразу писать свою прогу(а
зря), а скачал популярные версии joiner'ов
для тестов. Как оказалось Касперский
неравнодушен к программам такого рода и
монитор сразу же завижжал. Вот тогда и
пришлось писать самому. Проигрывание mp3 файлов с помощью mpegdll.dll При разработке чатилки мне захотелось чтоб в программе была возможность передать голос, записанный с микрофона. Как передавать голос на лету я так и не разобрался и решил передавать mp3 файл, а на другом конце его воспроизводить. Покопавшись в инете я выяснил что когда дело касается ненапряжного воспроизведения люди используют библиотеку mpegdll.dll. Программа для отправки сообщений методом net send
В системах линейки NT есть такая служба
messenger, которая позволяет принимать
собщения, посланные командой net send host/ip
сообщение, например: net send 127.0.0.1 привет.
Все как правило юзают командную строку.
Когда приходит такое сообщение, то ip
отправителя не показуется, а показуется
имя машины. Это очень не удобно в
распределенных сетях(например в сети
моей общаги), так как показуется не
полное доменное имя, а только имя машины,
которое указано в настройках. Программа для ожидания открытия некоторого порта на некотором хосте
Мой друг каждый день транслировал в сеть
с тюрена канал MTV, телеков у нас небыло
конечно а вот компы были, тока вот
трансировал он не постоянно а то
запускал то закрывал. Так возникла идея
написать программу которая будет
подавать сигнал при открытии и закрытии
порта у некоего хоста. Программа для блокировки запуска приложений
В списке тем на бакалавра на 4м курсе
была такая тема: "Блокировка запуска
приложений". Не долго думая я сел,
порылкак как обычно в инете, почитал как
это делать и написал то, что Вы видите на
скриншоте. Программа для скрывания приложений с рабочего стола и панели задач в трей При возникновении в системе подозртельный процессов все как правило проверяют всякими утилитками реестр на предмет автозагружаемых программ. Все знают что именно там зачастую прописаны всякого рода трояны. Но не все знают где смотреть и не все знают что программы не проверяют многие места из которых можно запустить процесс или прилепить к какому-нибудь системному процессу dll'ку. Автозагрузка из реестра, просмотр, редактирование списка.
При возникновении в системе
подозртельный процессов все как правило
проверяют всякими утилитками реестр на
предмет автозагружаемых программ. Все
знают что именно там зачастую прописаны
всякого рода трояны. Но не все знают где
смотреть и не все знают что программы не
проверяют многие места из которых можно
запустить процесс или прилепить к
какому-нибудь системному процессу dll'ку.
Программа реализации алгоритма
Дейкстры - поиск минимального пути в
неориентированом графе. Легкий но
запутаный алгоритм. В программе
реализована графическая интерпритация
результата.
Программа реализации алгоритма
Дейкстры - поиск минимального пути в
неориентированом графе. Легкий но
запутаный алгоритм. В программе
реализована графическая интерпритация
результата. Исходные коды программы которая создает фракталы, а имено "Дракон Хартера-Хейтуэя", "Дереве" и "Треугольник Серпинского". Описаниями фракталов изобилует интернет. Получаются очень красивые картины. Любуйтесь, и ждите новых фракталов... Интересные и полезные сайты про Delphi: Если Вы хотите, чтобы Ваш сайт был в этом разделе пишите. http://www.noil.pri.ee/ - Здесь вы можете почитать статьи, скачать исходники и компаненты, пообщаться на форуме. Немного юмора: :))
Дружественная рассылка: Все
кто хочет изучить Delphi и реально
научиться писать свои программы, ЦПИ "Эверест"
поможет Вам. 10 причин в пользу платного обучения в ЦПИ "Эверест"… 1. Когда Вы
платите деньги-
появляется дополнительный стимул
против лени: надо учиться, ведь деньги
уже уплачены….
5. Стоимость обучения
одного месяца в ЦПИ "Эверест"
сравнима с ценой хорошей книги. Но часто
ли Вам попадались книги, рассчитанные
именно на Вас. Мы же работаем
индивидуально.
8. А это значит, что …Мы
предлагаем получить "высшее
образование" - профессию
программиста всего за
1 год и 144 доллара, любой ВУЗ
попросит в 3 раза больше за один только
семестр. По всем вопросам обращайтесь ко мне. Если вы встретили в интернете
интересный сайт или статью, да и вообще, что угодно
связанное с Delphi, поделитесь ссылкой. Предложения, критику и пожелания пишите на e-mail. |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiinternet |
Отписаться
Вспомнить пароль |
В избранное | ||