Быстрая Сортировка
реклама
Часть 1:
Sub open_file()
Dim a(500) As Integer
Dim b(500) As Integer
Dim e(500) As Integer
Dim n As Long
Dim sr As Long
Dim swich As Long
Dim z As Integer
Dim begintime As Date
Dim endtime As Date
n = InputBox("n=")
Max = 100
Min = -100
Randomize
begintime = Timer
swich = 0
sr = 0
minim = 1
maxim = n
z = Int((maxim) * Rnd() + minim)
t = a(z)
line1: c1 = 1
d1 = 1
i = 1
Do While i <= n
If a(i) <= t Then b(c1) = a(i): c1 = c1 + 1: sr = sr + 1
If a(i) > t Then e(d1) = a(i): d1 = d1 + 1: sr = sr + 1
i = i + 1
Loop
m1 = c1 - 1
m2 = d1 - 1
swich = swich + m1 + m2
j = 1
Do While j <= m1
a(j) = b(j)
j = j + 1
Loop
k = 1
Do While k <= m2
a(m1 + k) = e(k)
k = k + 1
Loop
l = 1
Do
If a(l) > a(l + 1) Then sr = sr + 1: t = a(l + 1): GoTo line1
l = l + 1
sr = sr + 1
Loop While l <= n - 1
endtime = Timer
alltime = endtime - begintime
End Sub
часть 2:
Private Sub CommandButton1_Click()
Dim a(200) As Integer
Dim b(200) As Integer
Dim e(200) As Integer
Dim n As Long
Dim sr As Long
Dim swich As Long
Dim z As Integer
Dim begintime As Date
Dim endtime As Date
Dim sfile
Dim rt As String
rt = "Быстрая сортировка"
n = InputBox("n=")
Max = 100
Min = -100
Randomize
For f = 1 To n
a(f) = Int((Max - Min) * Rnd() + Min)
Worksheets("Лист2").Cells(f, 3).Value = a(f)
Worksheets("Лист2").Cells(f, 2).Value = f
Next f
sfile = InputBox("Введите имя файла и путь для сохранения в нем результатов сортировки")
begintime = Timer
swich = 0
sr = 0
minim = 1
maxim = n
Randomize
z = Int((maxim) * Rnd() + minim)
t = a(z)
line1: c1 = 1
d1 = 1
i = 1
k = 1
l = 1
Do While i <= n
If a(i) <= t Then b(c1) = a(i): c1 = c1 + 1: sr = sr + 1
If a(i) > t Then e(d1) = a(i): d1 = d1 + 1: sr = sr + 1
i = i + 1
Loop
m1 = c1 - 1
m2 = d1 - 1
swich = swich + m1 + m2
j = 1
Do While j <= m1
a(j) = b(j)
j = j + 1
Loop
Do While k <= m2
a(m1 + k) = e(k)
k = k + 1
Loop
For m = 1 To n
Worksheets("Лист2").Cells(m, 6).Value = a(m)
Worksheets("Лист2").Cells(m, 5).Value = m
Next m
Do
If a(l) > a(l + 1) Then sr = sr + 1: t = a(l + 1): GoTo line1
l = l + 1
sr = sr + 1
Loop While l <= n - 1
endtime = Timer
Open sfile For Output As #1
Write #1, rt
For m = 1 To n
Write #1, a(m)
Worksheets("Лист2").Cells(m, 6).Value = a(m)
Worksheets("Лист2").Cells(m, 5).Value = m
Next m
Close #1
Worksheets("Лист2").Cells(3, .Value = endtime - begintime
Worksheets("Лист2").Cells(4, .Value = sr
Worksheets("Лист2").Cells(5, .Value = swich
End Sub
Private Sub CommandButton2_Click()
For i = 1 To 500
Worksheets("Лист2").Cells(i, 2).Clear
Worksheets("Лист2").Cells(i, 3).Clear
Worksheets("Лист2").Cells(i, 6).Clear
Worksheets("Лист2").Cells(i, 5).Clear
Worksheets("Лист2").Cells(3, .Clear
Worksheets("Лист2").Cells(4, .Clear
Worksheets("Лист2").Cells(5, .Clear
Next
End Sub
реклама
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают