当前位置: 首页 > 科技观察

简单选择排序

时间:2023-03-20 20:20:46 科技观察

前言  本博客基于吴米雄的博客,可点击博客地址进入。里面有很多不错的博客,我的排序算法都出自这里;数据结构的概念我就不细说了。吴迷大哥的博客有详细的解释。写这些博客只是为了记录自己的学习过程,补充一些自己的理解,希望对大家有所帮助。基本思想  选择排序的基本思想是在每一pass中选择n-i+1(i=1,2,...,n-1)条记录中关键字最小的记录作为第i-第一个有序序列Record。这里先介绍简单的选择排序方法。简单选择排序(SimpleSelectionSort)是通过比较n-i个关键词,从n-i+1条记录中选出关键词最小的记录,与第i(1≤i≤n)条记录交换,换句话说,在一开始,从序列arr[0...n-1]中选出最小的元素与第一条记录arr[0]交换,然后从arr[1...n-1]中选出最小的一个被选中与arr[1]交换,arr[2...n-1]中最小的与arr[2]交换,依此类推,直到整个序列有序。代码实现  /***简单选择排序*@paramarr*/publicstaticvoidsimpleSelectSort(int[]arr){intlen=arr.length;整数索引;//记录arr[i...len-1]的最小元素Subscriptfor(inti=0;iarr[j]){index=j;}}交换(arr,我,索引);//交换arr[i]和arr[index]}}执行过程模拟  上面的代码应该很容易理解,但是我们来模拟一下计算机执行的过程。  1)一开始,初始序列为{5,3,7,9,1,6,4,8,2},i=0,index=i=0,j=i+1=1,初始,状态如下  2)当i=0  3)当i=1时,同理,交换如下  4)当i=2,3,4,5,6,7,8,如下  至此,整个序列已经从小到大排列好了;当然,从上面的模拟过程可以看出,算法还可以稍微改进一下,改进的地方交给评委,也算是一种扩充吧!总结  简单排序算法比较简单,没什么难度,希望大家能在我提供的代码实现中做一些优化,比如当i=index时,不需要优化等等!