选择排序之直接选择排序
2015-10-08 22:06
127 查看
选择排序之直接选择排序
直接选择排序思想:第一趟从n个元素的数据序列中选出最小/大的元素放到最前/后的位置,下一趟从n-1个元素中选出最小/大的元素并放到次前/后的位置,如此循环,经过n-1趟完成排序。
序列{38,97,26,19,38*,15}的直接选择排序过程如下图:
直接选择排序算法代码如下:
直接选择排序时间复杂度O(n2),最好情况O(n2),最坏情况O(n2),空间复杂度O(1)
是不稳定排序。
直接选择排序思想:第一趟从n个元素的数据序列中选出最小/大的元素放到最前/后的位置,下一趟从n-1个元素中选出最小/大的元素并放到次前/后的位置,如此循环,经过n-1趟完成排序。
序列{38,97,26,19,38*,15}的直接选择排序过程如下图:
直接选择排序算法代码如下:
import java.util.Scanner; public class SelectSort { public static void selectSort(int[] keys) { for (int i = 0; i < keys.length - 1; i++) {// 遍历n-1趟 int min = i;// 标记最小位置 for (int j = i + 1; j < keys.length; j++) {// 从i+1之后数列中查找更小的数 if (keys[j] < keys[min]) { min = j; } } if (min != i) {// 如果不同,则交换位置 keys[i] = keys[min] ^ keys[i]; keys[min] = keys[i] ^ keys[min]; keys[i] = keys[i] ^ keys[min]; } } } public static void main(String[] args) { Scanner s = new Scanner(System.in); int[] n = new int[10]; for (int i = 0; i < n.length; i++) { n[i] = s.nextInt(); } selectSort(n);// 调用选择排序算法 for (int i = 0; i < n.length; i++) { System.out.print(n[i] + " "); } } }
直接选择排序时间复杂度O(n2),最好情况O(n2),最坏情况O(n2),空间复杂度O(1)
是不稳定排序。
相关文章推荐
- IOS开发之实现App消息推送
- gustafson,Sun-Ni,Amdahl
- properties类的相关用法
- Java:调用构造器的具体处理步骤
- 在做进销存系统的过程中经常遇到获取时间查询的一些总结
- js导航栏单击事件背景颜色变换
- 王学岗自定义的dialog
- ThinkPHP 的一些知识
- 探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤
- 内核层监控进程 线程 创建和销毁
- JVM指令助记符
- superoj800 食物链
- 2015-10-08
- Qt 改变图片亮度算法
- 探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤
- Eclipse使用问题—Tomcat部署ClassNotFound问题
- JVM指令详解(下)
- 扩展ACL的基本用法
- iOS经典讲解之实现App消息推送功能(一)
- 彻底理解ThreadLocal