选择排序

白玉 IT哈哈
选择排序的思想其实和冒泡排序有点类似,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。举个栗子,对5,3,8,6,4这个无序序列进行简单选择排序,首先要选择5以外的最小数来和5交换,也就是选择3和5交换,一次排序后就变成了3,5,8,6,4.对剩下的序列一次进行选择和交换,最终就会得到一个有序序列。其实选择排序可以看成冒泡排序的优化,因为其目的相同,只是选择排序只有在确定了最小数的前提下才进行交换,大大减少了交换的次数。选择排序的时间复杂度为O(n^2)

实现代码:

/** *@Description:<p>简单选择排序算法的实现</p> *@author 王旭 *@time 2016-3-3 下午9:13:35 */public class SelectSort {    public static void selectSort(int[] arr) {        if(arr == null || arr.length == 0)            return ;        int minIndex = 0;        for(int i=0; i<arr.length-1; i++) { //只需要比较n-1次            minIndex = i;            for(int j=i+1; j<arr.length; j++) { //从i+1开始比较,因为minIndex默认为i了,i就没必要比了。                if(arr[j] < arr[minIndex]) {                    minIndex = j;                }            }            if(minIndex != i) { //如果minIndex不为i,说明找到了更小的值,交换之。                swap(arr, i, minIndex);            }        }    }    public static void swap(int[] arr, int i, int j) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }}

更多相关文章

  1. 将AngularJS、jQueryUI、Angular-Drag-Drop合并为排序列表
  2. Jquery 传json格式数据到后台,后台反序列化得到一个集合list
  3. jQuery+EasyUI实现treegrid/datagride所绑定列只能够输入数字,且
  4. 用无序列表键入文本脚本
  5. 如何集中无序列表?
  6. 如何在“”之前删除多个UTF-8 BOM序列?
  7. php数字操作,高精度函数,保留计算结果小数位
  8. Django dumpdata无法序列化现有列
  9. mysql 中使用聚合函数sum()后出现很长的小数

随机推荐

  1. 学习Python爬虫(五):爬取图片
  2. python飞船游戏(三)
  3. 深度学习与计算机视觉系列(1)_基础介绍
  4. macports没有将python_select放在/ opt /
  5. python入门第七天
  6. 面试---Python中的模块和包是什么?
  7. 如何格式化Gtk.Entry中的条目
  8. 在matplotlib中如何使用不同的edgecolor
  9. python的全局变量与局部变量实验
  10. python实现邮件发送功能