选择排序算法--程序实现•(1)对冒泡排序算法的改进,交换次数少,效率高•(2)在参加排序的所有数组元素中找出最小/最大数据的元素•(3)使它与未排序元素中第一个元素相互交换位置•(4)以此类推,直到所有元素成为一个有序的序列选择排序的原理i=1k=1forj=2to4ifa(k)a(j)nextjifkithent=a(k):a(k)=a(i):a(i)=tEndif第一遍排序(升序为例)22352918‘第一遍加工‘将未排序所有元素中的第一个元素看成最小/最大‘从第二个开始‘找出比第一个元素大/小的数‘找到以后把位置给kthenk=j‘通过第一遍的加工,找出最小/最大值位置,查看是不是处在第一个元素位置‘不是,则进行交换,即将最小/最大值最第一个值交换位置i=2k=2forj=3to4ifa(k)a(j)nextjifkithent=a(k):a(k)=a(i):a(i)=tEndif第二遍排序(升序为例)‘第二遍加工‘将未排序所有元素中的第一个元素看成最小/最大‘从第三个开始‘找出比第一个元素大/小的数‘找到以后把位置给kthenk=j‘通过第一遍的加工,找出最小/最大值位置,查看是不是处在第一个元素位置‘不是,则进行交换,即将最小/最大值最第一个值交换位置18352922i=3k=3forj=4to4ifa(k)a(j)nextjifkithent=a(k):a(k)=a(i):a(i)=tEndif第三遍排序(升序为例)‘第三遍加工‘将未排序所有元素中的第一个元素看成最小/最大‘从第四个开始‘找出比第一个元素大/小的数‘找到以后把位置给kthenk=j‘通过第一遍的加工,找出最小/最大值位置,查看是不是处在第一个元素位置‘不是,则进行交换,即将最小/最大值最第一个值交换位置18222935Fori=1ton-1k=iforj=i+1tonifa(k)a(j)thenk=jnextjifikthent=a(i):a(i)=a(k):a(k)=tEndifNexti对数组d中的n个数进行降序排序,其方框处程序代码如何修改思考:在i到n中定位最小数的位置如果ki,则a(k)与a(i)交换对n个数进行升序排序,其程序代码如下:巩固练习Fori=1to3h=1Forj=i+1To8Ifa(h)a(j)Thenh=jNextjIfihThent=a(i):a(i)=a(h):a(h)=tEndIfNexti1、经过以下程序的运行,原始数组a(1)到a(8)的数据依次为“2,5,20,9,10,8,11,1”经过该程序段“加工”后,得到的数据排序结果是2、下列VB程序段是选择排序程序的主要部分。其中虚线框内代码用于寻找数据元素d(i)到d(n)的最小值。……Fori=1Ton-1k=IForj=i+1TonIfd(j)d(k)Thenk=jNextjIfikThent=d(i):d(i)=d(k):d(k)=tNexti……框内代码运行结速时,保存最小值的数组元素一定是()A.d(n)B.d(j)C.d(i)D.d(k)D巩固练习再见