资源描述
,选择排序算法,-,程序实现,(,1,)对冒泡排序算法的改进,交换次数少,效率高,(,2,)在参加排序的所有数组元素中找出最小,/,最大数据的元素,(,3,)使它与未排序元素中第一个元素相互交换位置,(,4,)以此类推,直到所有元素成为一个有序的序列,选择排序的原理,i=1,k=1,for j=2 to,4,if a(,k,),a(,j,),next j,if ki then,通过第一遍的加工,找出最小,/,最大值位置,查看,),t=a(k),:,a(k)=a(i),:,a(i)=t,不是,则进行交换,即将最小,/,最大值最第一个值交换位置,End if,第一遍排序(升序为例),22,35,29,18,第一遍加工,将未排序所有元素中的第一个元素看成最小,/,最大,从第二个开始,找出比第一个元素大,/,小的数,找到以后把位置给,k,then,k=j,通过第一遍的加工,找出最小,/,最大值位置,查看是不是处在第一个元素位置,不是,则进行交换,即将最小,/,最大值最第一个值交换位置,i=,2,k=,2,for j=,3,to,4,if a(,k,),a(,j,),next j,if ki then,通过第一遍的加工,找出最小,/,最大值位置,查看,),t=a(k),:,a(k)=a(i),:,a(i)=t,不是,则进行交换,即将最小,/,最大值最第一个值交换位置,End if,第二遍排序(升序为例),第二遍加工,将未排序所有元素中的第一个元素看成最小,/,最大,从第三个开始,找出比第一个元素大,/,小的数,找到以后把位置给,k,then,k=j,通过第一遍的加工,找出最小,/,最大值位置,查看是不是处在第一个元素位置,不是,则进行交换,即将最小,/,最大值最第一个值交换位置,18,35,29,22,i=,3,k=,3,for j=,4,to,4,if a(,k,),a(,j,),next j,if ki then,通过第一遍的加工,找出最小,/,最大值位置,查看,),t=a(k),:,a(k)=a(i),:,a(i)=t,不是,则进行交换,即将最小,/,最大值最第一个值交换位置,End if,第三遍排序(升序为例),第三遍加工,将未排序所有元素中的第一个元素看成最小,/,最大,从第四个开始,找出比第一个元素大,/,小的数,找到以后把位置给,k,then,k=j,通过第一遍的加工,找出最小,/,最大值位置,查看是不是处在第一个元素位置,不是,则进行交换,即将最小,/,最大值最第一个值交换位置,18,22,29,35,For i=1 to,n-1,k=i,for j=i+1 to,n,if,a(,k,),a(,j,),then k=j,next j,if,i,k,then,t=a(,i,):a(,i,)=a(,k,):a(,k,)=t,End if,Next i,对数组,d,中的,n,个数进行降序排序,其方框处程序代码如何修改,思考:,在,i,到,n,中定位最小数的位置,如果,ki,,则,a(k),与,a(i),交换,对,n,个数进行升序排序,其程序代码如下:,巩固练习,For i=1 to 3,h=1,For j=i+1 To 8,If a(h)a(j) Then h=j,Next j,If ih Then,t=a(i) : a(i)=a(h) : a(h)=t,End If,Next i,1,、经过以下程序的运行,原始数组,a(1),到,a(8),的数据依次为“,2,,,5,,,20,,,9,,,10,,,8,,,11,,,1,”经过该程序段“加工”后,得到的数据排序结果是,2,、下列,VB,程序段是选择排序程序的主要部分。其中虚线框内代码用于寻找数据元素,d(i),到,d(n),的最小值。,For i=1 To n-1,k=I,For j=i+1 To n,If d(j)d(k) Then k=j,Next j,If ik Then t=d(i) : d(i)=d(k) : d(k)=t,Next i,框内代码运行结速时,保存最小值的数组元素一定是( ),A. d(n) B. d(j) C. d(i) D. d(k),D,巩固练习,再见,
展开阅读全文