发布日期:2024-12-08 19:47 点击次数:59
选拔排序是一种粗浅排序技艺。其基本想想是,最初在未排序的序列中找到最小或最大元素,存放到排序序列的肇端位置,然后再从剩余未排序元素中链接寻找最小或最大元素,再次放到已排序序列的末尾。依此类推,直到总共元素均排序完了。需要注认识是,选拔排序是不逍遥的排序标准,即要是待排序序列中有两个元素至极,它们的相对位置可能会在排序经过中发生转换。
一、选拔排序责任旨趣
选拔排序的基快乐趣为:(1)运工作态,设定一个有n个元素的无序区R[0~n-1],有序区为空。(2)选拔经过,设置一个变量K,从0遍历至n-2。在每次遍历中,通过相比细目无序区中最小元素的位置P。(3)交换经过,要是找到的最小元素不是无序区的第一个元素,即P不即是K时,则将其与无序区的第一个元故旧换。这么,每次遍历后,无序区的第一个元素就被放到了有序区的末尾,同期有序区元素数目增多1,无序区元素数目减少1。(4)叠加,叠加上述选拔和交换经过,直到无序区元素数目为0,即总共元素王人已排序完了。
如图2所示,假定有一个数组{12, -25, 43, 5, 37, -6},使用选拔排序对其进行排序的经过为:(1)已知运工作态{12, -25, 43, 5, 37, -6}数组。(2)第一次遍历,找到最小元素-25,与元素12交换,得到{-25, 12, 43, 5, 37, -6}数组。(3)第二次遍历,在剩余元素{12, 43, 5, 37, -6}中找到最小元素-6,与元素12交换,得到{-25, -6, 43, 5 37, 12}数组。(4)依此类推,直到总共元素排序完了,最终得到{-25, -6, 5, 12, 37, 43}。
二、选拔排序束缚设施
完成选拔排序经过,如图3所示,其施行设施为:(1)已知输入的InArray数组。 (2)从输入数组InArray的索引K=0位置入手遍历。 (3)查找数组中的最小元素,获取其位置P索引。 (4)要是K与P索引位置不同,则交换InArray[K]和InArray[P]位置。(5)通过K加1后,前进到InArray下一个元素。要是K<n-1,那么转至设施3,不然转至设施6。 (6)算法收尾。
三、选拔排序示例代码
使用Java编写圭臬完结选拔排序算法,该算法不错对如图2所示的输入数组InArray由小到猛进行排序。界说一个选拔排序实用SelectionSortUtils类,其中标准selectionSort()完结选拔排序算法,遍历数组中的每个元素,通过里面轮回在剩余未排序元素中寻找最小值的索引,找到最小值后,将其与现时元故旧换位置。客户端测试类Client测试选拔排序,打印排序前的数组,调用标准对数组进行排序,打印排序后的数组。
而今迈步重新越,另辟新路再起程。本文所述不雅点实质,要是对您有些匡助大约启示,请点击温雅、洽商一下,感谢扶植!