选择排序原理及代码实现
2015-11-14 21:24
176 查看
选择排序及原理
简单选择排序类似于冒泡排序(Bubble Sort) ,每次都会在剩下的元素集合中选择出一个最值出来填充到当前位置。唯一的区别是,冒泡排序在每次发现比当前值小于(或大于)时,都会交换元素的位置, 而 简单选择排序是选择剩余元素中的最值和当前位置交换数据。
比如对于元素集合R={37, 40, 38, 42, 461, 5, 7, 9, 12}
在第一趟排序中:37直接和5交换, 形成新的序列 R1={5,40,38,42,461,37,7,9,12}
在第二趟排序中:40直接和7交换, 形成新的序列 R2={5,7,38,42,461,37,40,9,12}
以此类推,直到最后一个元素(注意:在第二趟排序中,38比42小,但是他们并没有交换数据)。
简单选择排序类似于冒泡排序(Bubble Sort) ,每次都会在剩下的元素集合中选择出一个最值出来填充到当前位置。唯一的区别是,冒泡排序在每次发现比当前值小于(或大于)时,都会交换元素的位置, 而 简单选择排序是选择剩余元素中的最值和当前位置交换数据。
比如对于元素集合R={37, 40, 38, 42, 461, 5, 7, 9, 12}
在第一趟排序中:37直接和5交换, 形成新的序列 R1={5,40,38,42,461,37,7,9,12}
在第二趟排序中:40直接和7交换, 形成新的序列 R2={5,7,38,42,461,37,40,9,12}
以此类推,直到最后一个元素(注意:在第二趟排序中,38比42小,但是他们并没有交换数据)。
package ch02; /** * 选择排序 * @author 小明 * */ public class SelectionSort { public static void sort(long [] arr){ int k = 0; long tmp = 0; for(int i =0;i<arr.length;i++){ k =i; for(int j =i;j<arr.length;j++){ if(arr[j]<arr[k]){ k=j;//每次k为最小值 } } tmp =arr[i]; arr[i]=arr[k]; arr[k] =tmp; } } }
package ch02; public class TestSort { public static void main(String[] args) { long[]arr = new long[]{20,4,5,6,3,7,1}; // BubbleSort bubbleSort = new BubbleSort(); // bubbleSort.sort(arr); SelectionSort selectionSort = new SelectionSort(); selectionSort.sort(arr); for (int s = 0; s < arr.length; s++) { System.out.println(arr[s]); } } }
相关文章推荐
- python 调试
- 搭架私有Git服务器Gogs
- 基础知识系列5--五大查找(二叉查找树代码未写)
- HDU 1847 Good Luck in CET-4 Everybody!(博弈入门)
- JAVA基础——集合框架
- 11.c/c++程序员面试宝典-文件输入与输出
- Face Alignment at 3000FPS(C++版)工程配置
- Struts2_include
- 锁优化-java
- C++插入排序的递归算法
- python 学习笔记3
- eclipse开发安卓项目的一些小错误(1)
- 线程安全(java)
- 面向对象编程的思考
- getParameter和getAttribute的区别是什么?
- Java 反射机制
- 软件工程线上课程(C语言实践篇)学习心得总结
- Java异常处理 编程 考试成绩 优良中差判断
- Java入门(二)类与继承
- Java 设计模式之单例模式详解