Java再学习-算法之选择排序
来源:互联网 发布:网络存在安全隐患 编辑:程序博客网 时间:2024/06/05 14:43
继上篇文章讲到插入排序和冒泡排序算法。这次来看一下选择排序。
和上两个循环一样,还是分成两套循环,外循环起指针作用,用来指定每次循环的元素值和元素序列,而内部循环则起到真正的快速排序逻辑。首先如果我们取到第i值,那么我们要与第i+1,i+2,....等元素进行对比,找到i元素后面最小的元素,与之交换位置即可,只不过这里的交换位置比较新颖,我们看下面的代码:
package cn.tgb.sort;import java.util.Arrays;//选择排序public class SelectionSort {// 生成随机数private static int[] input = new int[] { (int) (Math.random() * 100),(int) (Math.random() * 100), (int) (Math.random() * 100),(int) (Math.random() * 100), (int) (Math.random() * 100),(int) (Math.random() * 100),(int) (Math.random() * 100)};public static void main(String[] args) {//先打印出随机数元素序列System.out.println(Arrays.toString(input));//外循环起到指针作用for (int i = 0; i < input.length - 1; i++) {//首选记录第一次循环 指针的元素值int key = input[i];//指针序号int index = i;// 比较当前值和下一个值的关系,记录下较小值的值和索引数,用于交换。for (int j = i + 1; j < input.length; j++) {//如果指针元素值小于后面的元素值,值不变,否则交换值key = key < input[j] ? key : input[j];//如果指针元素值小于后面的元素值,序号不变,否则交换序号index = key < input[j] ? index : j;}//指针找到最大值的位置,变成了指针元素值input[index] = input[i];//当前指针的值,变成了最小值keyinput[i] = key;//打印每次排序的结果System.out.println("第" + (i + 1) + "次排序");for (int k = 0; k < input.length; k++) {System.out.print(input[k] + " ");}System.out.println(" ");}}}
执行结果如下图所示:
在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
综上,冒泡排序,插入排序和选择排序,根据元素序列的不同情况,来选择合适的排序算法。
1 0
- Java再学习-算法之选择排序
- 算法学习之排序——选择排序(Java)
- 算法学习之选择排序算法(java)
- 算法学习之排序算法:选择排序
- 算法学习之选择排序
- 算法学习之选择排序
- Java-排序算法之选择排序算法
- Java-算法之选择排序
- java算法之选择排序
- java算法之选择排序
- Java算法之选择排序
- 算法(第四版)学习笔记之java实现选择排序
- 经典算法学习:排序之选择排序
- 算法学习之排序(3)--选择排序
- [学习笔记]排序算法之选择排序
- 算法学习笔记--排序之选择排序
- java排序算法学习(一)--选择排序
- Java学习笔记排序算法----------选择排序
- UIDatePicker 高度的设置
- iOS UILable常用属性总结
- ASP+Access的安全隐患及对策
- chrome 去掉每次打开都是hao123
- ubuntu无法识别usb设备
- Java再学习-算法之选择排序
- 1011 - Marriage Ceremonies
- java中synchronize的总结
- testlink xml转excel
- 使用Excel进行无重复双因素方差分析
- linux下mongodb的安装以及扩展的安装
- Android中启动页ViewPager和ViewFlipper带指示器
- 苹果:6月1日后所有应用必须支持IPv6-only网络
- 【转载】IntelliJ Idea 常用快捷键列表