排序法之选择排序法
来源:互联网 发布:485通讯端口电压多少 编辑:程序博客网 时间:2024/06/05 21:00
选择排序:
首先通过数组中元素的比较方式来分析:
用数组中第一个角标的元素与数组中第二个角标的元素进行比较,发现9比6大,进行位置置换,此处应该定义一个三方变量,用来记录住置换过程的元素值,然后再用第一个角标的元素与下一个角标元素进行比较,按照全面的原则进行置换位置,如果前者小于后者,则不置换位置,一次比较,当第一轮结束之后第一个角标出能取的该数组中最小的元素的值,然后再用第一个角标的元素开始和下一个角标的元素进行比较,同理,当第二轮结束后,第二个角标处获取了该数组中的第二小的值。所以我们发现当依次这样比较下去,就可以对数组中的元素进行排序,当比较到arr.length-1元素时,发现只剩下这一个元素,没有其他元素和它进行比较了。
思路:
1、首先定义一个功能函数对数组进行排序,
2、明确结果,没有返回值,因为它只是对数组进行排序的一个动作,明确是否有未知内容参与运算,有,数组类型int[] arr
实现代码:
public static void selectSort(int[] arr){ for(int x=0;x<arr.length-1;x++){ for(int y=x+1;y<arr.length;y++){ if(arr[x]>arr[y]){ int temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; } } }}
优化后的选择排序:
从上面的排序图中我们可以知道,对数组中元素进行置换位置的次数过多,也就是对堆内存的操作频繁,降低了性能,下面我们可以通过这种方式对性能优化。
思路:
在栈内存中我们定义两个变量,分别用来记录较小的元素的值和较小元素的角标,然后对其进行初始化,至于初始化的值只要是数组中的任意元素即可,然后拿数组中的元素与它进行比较,如果发现拿去比较的元素比变量中记录的数值要小,那么就进行位置置换,并记录下较小的元素的角标,依次把数组中的元素遍历完,就可以获取数组中的最小元素的值和角标,然后我们拿初始化的值和获取的最小的元素进行位置的置换,这样以来当我们获取了数组中的元素的最小的时候,堆内存中的只用操作一次位置即可,这样的就提高性能。
实现代码:
public static void selectSort_2(int[] arr){ for(int x=0;x<arr.length-1;x++){ int num=arr[x]; int index=x; for(int y=x+1;y<arr.length;y++){ if(num>arr[y]){ num=arr[y]; index=y; } } if(index!=x){ int temp = arr[x]; arr[x] = arr[index]; arr[index] = temp; } }}
- 排序之选择排序法
- 排序法之选择排序法
- java排序算法之(选择法排序)
- C排序算法之选择排序法
- 排序算法之选择法排序(Java)
- C++排序之直接选择排序法
- 常用排序之选择排序法
- 数据结构排序算法之选择排序法
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- 排序之选择排序
- SZE品牌语录
- 漫谈程序员系列:她发现了一个Bug……
- JavaScript语言基础---(七)全局变量和局部变量
- sze品牌怎样识别
- 程序员保值的4个秘密
- 排序法之选择排序法
- 栈操作
- 利用ADO.NET类库结合后台数据库实现登录判断
- 树莓派3 ROS语音包开发之音频采集
- linux安装oracle client客户端连接远程数据库
- sze品牌大事记
- jQuery $.data()方法使用注意细节
- 程序员的神秘等式,你造几个?
- Sze带你探秘法国手工皮鞋之旅完美落幕