Показать сообщение отдельно
  #10  
Старый 05.11.2012, 00:32
Nevil_White Nevil_White вне форума
Прохожий
 
Регистрация: 28.10.2012
Адрес: Киев
Сообщения: 27
Версия Delphi: 7
Репутация: 10
По умолчанию

я уже был здесь и мне помогали с циклом для задания рендомного числа для массива. и с проблемой по поводу едита. мне довольно таки быстро помогли и дали знаний на последующий шаг, за что я во многом благодарен. Вообще в будущем у меня в планах использовать делфи чтоб объединить бардак у меня на жостком, я просто гитарист больше чем программист и нужно навести порядок в бесконечных сохранены текстах и аккордах с табами. а программу такую не найти, попробую написать ее сам. но сейчас я учусь (хотя живя жизнь мы все время учимся =) ). Ну тогда начнем: Гугл помог, но что-то помощь его не очень понятна, доверие к википедии имеет монополию и вот что я вижу, псевдокод.. хм, хорошо, а на делфи как адаптировать?

Код:
Пример реализации алгоритма простого двухпутевого слияния на псевдокоде:
function mergesort(m)
    var list left, right, result
    if length(m) ≤ 1
        return m
    else
        middle = length(m) / 2
        for each x in m up to middle
            add x to left
        for each x in m after middle
            add x to right
        left = mergesort(left)
        right = mergesort(right)
        result = merge(left, right)
        return result
    end if
Есть несколько вариантов функции merge(), наиболее простой вариант может выглядеть так:
function merge(left,right)
    var list result
    while length(left) > 0 and length(right) > 0
        if first(left) ≤ first(right)
            append first(left) to result
            left = rest(left)
        else
            append first(right) to result
            right = rest(right)
        end if
    if length(left) > 0 
        append left to result
    if length(right) > 0 
        append right to result
    return result

function mergesort(m) - (м) это массив?
Ответить с цитированием