排序算法的程序实现(教师版) 1.有如下程序段: For i = 1 To 2 For j = 5 To i + 1 Step -1 If a(j) > a(i) Then t = a(j): a(j) = a(i): a(i) = t End If Next j Next i 数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为( ) A.77,45,33,16,24 B.77,33,45,16,24 C.77,24,45,16,33 D.77,45,33,24,16 答案 A 解析 这是一个选择排序,其排序思想是:在i遍排序中,从最后一个元素开始到第i+1个元素依次和第i号元素比较,如果有比i号元素大的立刻交换,并且记录元素下标,一遍全部比较结束后再交换进行下一轮。 2.小赵对选择排序算法进行了如下改进:在数组的所有元素中找出最小和最大数据的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。小赵编写的VB程序段如下: p = 1: q = 10 Do While p < q iMin = p: iMax = p For i = p + 1 To q If a(i) < a(iMin) Then iMin = i If a(i) > a(iMax) Then iMax = i Next i t = a(iMin): a(iMin) = a(p): a(p) = t