插入排序的思想是:将初始数据分为有序部分和无序部分,每一步将一个无序部分的数据插入到前面已经排好序的有序部分中,直到插完所有元素为止。 插入排序的步骤如下:每次从无序部分中取出一个元素,与有序部分中的元素从后向前依次进行比较,并找到合适的位置,将该元素插到有序组当中。


Sub InsertSort() Dim i, j, temp, arr(1 To 10) For i = 1 To 10 arr(i) = Int(Rnd * 100 + 1) Next i Debug.Print 'Original Data: ' & Join(arr, ',') '输出原始数据 For i = 2 To 10 '循环整个数组 For j = i - 1 To 1 Step -1 '从第一项循环到第 i -1 项,用第i 项去对比,符合条件则插入 If arr(j + 1) < arr(j) Then temp = arr(j + 1) arr(j + 1) = arr(j) arr(j) = temp If j > 1 Then If arr(j - 1) < arr(j) Then Exit For End If End If Next j Next i Debug.Print 'After Sort: ' & Join(arr, ',') '输出排序后的数据
Original Data: 53,77,6,60,47,30,63,65,27,28 After Sort: 6,27,28,30,47,53,60,63,65,77

|