VB 帮忙改错(希尔排序)

来源:百度知道 编辑:UC知道 时间:2024/06/09 06:00:34
如题,请高手指点,下面程序怎么才是升序排列那些数字?还有请尽量按照我现在这程序的轮廓改,谢谢
Public Class frmSort
Dim number() As Integer= {2,6,4,8,10,12,89,45,37}
Private Sub frmSort_Load(...) Handles MyBase.Load
For i As Integer = 0 To 8
lstNum.Items.Add(number(i))
Next
End Sub
Private Sub btnShell_Click(...) Handles btnShell.Click
Dim gap,temp,num As Integer, doneFlag As Boolean
gap = CInt(Int(num/2))
Do While gap>=1
Do
doneFlag = True
For i As Integer= 0 To num -1 -gap
If number(i) > number(i + gap) Then
temp = number(i)
number(i) = number(i + gap)
number(i + gap) = temp
doneFlag = False
End If
Next
Loop Until doneFlag = True
gap = CInt(Int(gap/2))
Loop
For i As Integer = 0 To 8
lstNum.Items.Clear()
lstNum.Items.Add(number(i))
Next
End Sub
End Class

var
a:array[1..8]of integer;
t,i,f,d,n:integer;
begin
d:=8;
for i:=1 to d do read(a[i]);
n:=d;
while d<>1 do
begin
d:=d div 2;
repeat
f:=0;
for i:=1 to n-d do
begin
if a[i]>a[i+d] then begin t:=a[i]; a[i]:=a[i+d]; a[i+d]:=t; f:=1;end;
end;
until f=0;
end;
for i:=1 to 8 do write(a[i],' ');
end.