第3节 选择排序及程序实现 考试内容 考试要求 选择排序算法思想 c 选择排序程序实现 c 一、选择排序算法思想 每趟排序是在所有的数据中找出最大(或最小)的数据,与第一个数据交换位置,然后再在剩下的数据中找出最大(或最小)的数据,与第二个数据交换位置,以此类推,直到所有元素成为一个有序序列为止。 n个数据排序共需进行n-1趟(遍)排序。 二、选择排序算法框架 设定:对数组d中的n个数据进行升序排序。 (1)从前往后进行比较 For i = 1 To n - 1 ′n个排序共进行n-1趟排序 假定i位置上的数为最小数 For j = i + 1 To n ′i后面的位置 ′若找到更小的数,则将用k记录此数的位置 Next j If k < > i Then ′若i位置上的数不是最小数,则和k位置上的数进行互换 交换d(i)与d(k) End If Next i 注:若要按降序排列,将程序中的语句“If d(k)>d(j)”改为“If d(k)(2)从后往前进行比较 For i = 1 To n - 1 ′n个排序共进行n-1趟排序 假定i位置上的数为最小数 For j = n To i + 1 Step -1 ′i后面的位置 ′若找到更小的数,则将用k记录此数的位置 Next j If k < > i Then ′若i位置上的数不是最小数,则和k位置上的数进行互换 交换d(i)与d(k) End If Next i 注:若要按降序排列,将程序中的语句“If d(k)>d(j)”改为“If d(k)三、选择排序程序实现 设定:对数组d中的n个数据进行升序排序。 (1)从前往后进行比较 For i = 1 To n - 1 ′n个排序共进行n-1趟排序 k = i ′假定i位置上的数为最小数 For j = i + 1 To n ′i后面的位置 If d(k) > d(j) Then k = j ′若找到更小的数,则将用k记录此数的位置 Next j If k < > i Then ′若i位置上的数不是最小数,则和k位置上的数进行互换 temp=d(k):d(k)=d(i):d(i)=temp End If Next i (2)从后往前进行比较 For i = 1 To n - 1 ′n个排序共进行n-1趟排序 k = i ′假定i位置上的数为最小数 For j = n To i + 1 Step -1 ′i后面的位置 If d(k) > d(j) Then k = j ′若找到更小的数,则将用k记录此数的位置 Next j If k < > i Then ′若i位置上的数不是最小数,则和k位置上的数进行互换 temp=d(k):d(k)=d(i):d(i)=temp End If Next i