Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_Metod_2009_VVYeD.doc
Скачиваний:
6
Добавлен:
06.12.2018
Размер:
1.14 Mб
Скачать

Пример 5

' Имя файла Shake_Sort.vbs

' Программа демонстрирует Шейкер-сортировку

Option Explicit

const N=8

dim a()

redim a(N)

dim x,i,j,k,l,r

randomize

For i=1 To N

a(i)=Cint(10*rnd(1))

next

dim s

s=""

For i=1 To N

s=s+CStr(i)+" --> "+Cstr(a(i))+";"+vbcrlf

next

l=2: r=N: k=N

DO

j=r

While Cint(j)>=Cint(l)

If Cint(a(j-1))>Cint(a(j)) Then

x=a(j-1)

a(j-1)=a(j)

a(j)=x

k=j

End If

j=j-1

Wend

l=k+1

For j=l to r

If CInt(a(j-1))>Cint(a(j)) Then

x=a(j-1)

a(j-1)=a(j)

a(j)=x

k=j

End If

Next

r=k-1

LOOP UNTIL Cint(l)>Cint(r)

dim s1

s1=""

For i=1 To N

s1=s1+CStr(i)+" --> "+Cstr(a(i))+";"+vbcrlf

Next

MsgBox "Неотсортированный массив:"&vbCrLf&_

s&vbcrlf&vbcrlf&"Отсортированный:"&vbCrLf&_

s1,0,"Сортировка массива по Шейкеру:"

Пример 6

' Имя файла Find_1.vbs

' Линейный поиск наименьшего индекса элемента с заданным значением

' в "случайном" массиве.

Option Explicit

Dim i, s, x, Q

Const n=6

Dim B (6)

' Заполнение одномерного массива случайными числами

For i=0 to n

Randomize

B(i)=Fix(Rnd(1)*20)

s=s&B(i)&" "

Next

s=s&vbCrLf

' Начало алгоритма поиска

x=InputBox("Введите искомый элемент: ","Окно ввода:", 5)

i=0

Do

i=i+1 : Q=CInt(B(i))=CInt(x)

Loop Until (Q or (i=n))

If Q Then

MsgBox "Массив: "&s&vbCrLf&_

"Элемент "&x&" найден в массиве!"&vbCrLf&_

"Его минимальный индекс в массиве: "&i

Else MsgBox "Массив: "&s&vbCrLf&_

"Элемент "&x&" не найден в массиве!"

End If

Пример 7

' Имя файла Find_2.vbs

' Линейный поиск с "барьером" наименьшего индекса элемента с заданным значением

' в "случайном" массиве.

Option Explicit

Dim i, s, x, Q

Const n=6

Dim B (6)

' Заполнение одномерного массива случайными числами

For i=0 to n-1

Randomize

B(i)=Fix(Rnd(1)*20)

s=s&B(i)&" "

Next

s=s&vbCrLf

' Начало алгоритма поиска

x=InputBox("Введите искомый элемент: ","Окно ввода:", 5)

i=-1 : B(n)=x

Do

i=i+1

Loop Until CInt(B(i))=Cint(B(n))

If i<>n Then

MsgBox "Массив: "&s&vbCrLf&_

"Элемент "&x&" найден в массиве!"&vbCrLf&_

"Его минимальный индекс в массиве: "&i

Else MsgBox "Массив: "&s&vbCrLf&_

"Элемент "&x&" не найден в массиве!"

End If

Пример 8

' Имя файла Find_3.vbs

' Бинарный поиск индекса заданного элемента

' одномерного "случайного" числового массива, строго

' упорядоченного по возрастанию (нерекурсивный вариант).

' Число требуемых сравнений в методе бинарного поиска в среднем значительно

' меньше, чем при линейном поиске, а точнее говоря,

' не более чем логарифм n по основанию два вместо n в программе Find_2.vbs

Option Explicit

Dim i, j, s, x, Q, k

Const n=8

Dim B (8)

For i=0 to n

B(i)=CDbl(InputBox("Введите "&i&"-й элемент одномерного массива",_

"Ввод строго возрастающего вектора A:", i))

s=s&B(i)&" "

Next

s=s&vbCrLf

' Начало алгоритма поиска

x=CDbl(InputBox("Введите искомый элемент: ","Окно ввода:", 5))

i=0 : Q=False : j=n

Do

k=(i+j)\2

If B(k)=x Then

Q=True

Else

If B(k)<x Then

i=k+1

Else j=k-1

End If

End If

Loop Until Q or (i>j)

If Q Then

MsgBox "Массив: "&s&vbCrLf&_

"Элемент "&x&" найден в массиве!"&vbCrLf&_

"Его минимальный индекс в массиве: "&i

Else MsgBox "Массив: "&s&vbCrLf&_

"Элемент "&x&" не найден в массиве!"

End If

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]