Admin Опубликовано: 3 Август 2010

Мы уже поговорили об одном методе сортировке — парная сортировка. Сейчас поговорим о сортировке методом минимального элемента, по мне так они почти одна в одну, очень походи между собой, да и по скорости наверное почти одинаковые, но кому как нравится, методом минимальным элементом самая легкая сортировка. Да и не забываем, что мы до сих пор работает с одномерным массивом, но ее можно применять и для двумерных, например отсортировать строки так-то, так-то. Суть данной сортировки заключается в том, что мы каждый элемент массива принимаем за минимальный элемент и затем начиная с элемента, который стоит за этим минимальным сравниваем с ним, если меньше или больше (в зависимости от сортировки, по возрастанию или по убыванию), то делаем перестановку данных элементов, перестановку как делать думаю знаете и тут рассказывать нечего, но на всякий случай, дополнительную переменную заводим для хранения промежуточной информации и далее меняем. И это дело продолжается пока не закончится цикл, то есть вот и есть минус сортировки, в любом случае цикл до конца пройдет. Так как работаем мы с одномерным массивом, то сделаем из TStringGrid - одномерный массив. На форме у меня следующие компоненты

  • TStringGrid
  • TButton

В TStringGrid установлены в свойствах у меня в RowCount - 1, FixedCols-0,FixedRows-0, Options-goEditing – True.

Читать полностью »

Метки: ,



Admin Опубликовано: 3 Август 2010

Вот и хотел бы начать цикл сортировки одномерных массивов. Начать хотел бы с парной сортировки, хотя не стоило бы, наверное надо было начать с сортировки выбором минимального элемента, так как она самая медленная на мой взгляд, самая простая, да и парная сортировка почти ничем не уступает сортировки минимального элемента. Смысл этой сортировки состоит в том, что, если соседний элемент (i+1-элемент) больше или меньше (в зависимости от сортировки, по возрастанию или по убыванию), то мы их просто-напросто меняем местами и так до тех пор, пока не будет встречаться таких пар в массиве. Так как работа идет с одномерным массивом, то на форме у нас

  • TStringGrid
  • TButton

В TStringGrid установлены в свойствах у меня в RowCount - 1, FixedCols-0, FixedRows-0, Options-goEditing — True.

Читать полностью »

Метки: ,

Admin Опубликовано: 2 Август 2010

В этой статье я хотел бы поговорить о том, как можно удалить элементы массива путем смещения. Многие применяют технологию удаления — путем замены, удаляемых элементов например нулями или еще чем-то, а при выводе элементов массива их просто не выводят. Многие просто записывают в другой массив нужные элементы и потом выводят его, это не есть правильно, то есть фактически у нас же есть массив, значит мы в нем должны удалить элементы, а не переместить в другой, а если эти элементы не выводить, то они же фактически остаются там, и занимают место в памяти, что не есть хорошо. Алгоритм путем смещения очень простой, просто с элементы, которого надо удалить, например все «нули» начинается смещение элементов до конца массива, потом цикл начинается заново и до тех пор, пока не будет элементов в массиве, которые необходимо удалить. На форме у меня следующие компоненты, мы будет все это делать не в консольном режиме, в а графическом

  • TStringGrid
  • TButton

В TStringGrid свойстве Options-goEditing установить в True, в FixedCols, FixedRows установите в 0, в свойстве RowCount установите 1 (так как мы будем работать с одномерным массивом).

Читать полностью »

Метки: ,

Admin Опубликовано: 2 Август 2010

В этой статье хотел бы рассказать немного о потоках. Потому, что дальше хочу показывать примеры с ними, а именно TIdhttp+TThread и многое другое. Так, что немного о потоках узнать будет полезно. Вообще потоки «вещь» классная и довольная интересная, а главное нужная. Многопоточные приложения сейчас повсюду. Вообще, что такое многопоточное приложение — это приложение, которое может выполнять много разных действий в фоновом режиме, не мешая работать основному потоку, то есть основному приложению. То есть Вам надо посчитать очень большое число, или перебрать в цикле 65000 чисел для этого Вам необходимо подождать пока это все дело выполнится, а если Вы перетащите окно за заголовок окна вашей программы, то числа перестанут считаться, это означает, что работает основной поток, а соответственно все остальные действия ждут пока он выполнится и продолжат работу. Так вот потоки и предназначены, чтобы одновременно выполнялись более 1 действия одновременно, не мешая другу другу, и соответственно, чтобы пользователь мог вводить еще какие-то данные в это же время. Давайте возьмем например программу MS Word, так вот там идет, когда Вы печатаете — выполняется как минимум два потока и они не мешают друг другу. То есть Вы печатаете — это один поток, а второй поток — проверка орфографии, который не мешает Вам совсем печатать, правда? Вот Вам и пример многопоточного приложения, преимущества Вы уже думаю поняли их. Но не стоит злоупотреблять потоками, Вы можете их использовать там где они совсем ненужны, а это лишнее мегабайты памяти и так далее.

Читать полностью »

Метки: , ,

Admin Опубликовано: 1 Август 2010

В первой части я рассказал, как можно разбить строку на слова, числа, в общем на подстроки, которые находятся между пробелами в строке. Так вот как я уже говорил, первый метод не совсем быстрый и не совсем стабильный. Поэтому я пишу про статью про TParser - это класс, как я уже говорил, предназначен для разбора строки на слова, целочисленный данные, вещественные данные и многое другое. Этот класс поможет Вам разобрать математическое выражение и в нужном порядке выполнить его, конечно не получится «мего«-крутое выражение разобрать, но небольшие вполне.

На форме у меня следующие компоненты
  • TButton
  • TEdit
  • TListBox

Тут есть еще одно но, то, что TParser работает только с потоковыми данными, то есть с TStream. Но проблемы в потоковую переменную записать текст труда не составит, поэтому нам необходимо сначала ее создать, затем загрузить в TParser и начать работать.

Читать полностью »

Метки: , , ,

Страница 32 из 41« Первая...1020...3031323334...40...Последняя »