排序算法-选择排序
2016-03-03 10:42
232 查看
介绍
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
选择排序的交换操作介于0到(n-1)之间,比较操作为n(n-1)/2次,故时间复杂度为O(n)。最好情况是,已经有序,交换0次;最坏情况是,逆序,交换n-1次。
代码实现
/** * Created by lysongzi on 16/3/2. * 选择排序 */ public class SelectSort { public static void sort(int []arr){ int i, j, temp, min; for (i = 0; i < arr.length - 1; i++){ min = i; //遍历查找未排序部分的最小值 for (j = i + 1; j < arr.length; j++){ if (arr[min] > arr[j]) min = j; } //将未排序部分选出的最小值交换到已排序部分的尾部 temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } }
参考资料
维基百科相关文章推荐
- JavaScript演示排序算法
- 算法之排序算法的算法思想和使用场景总结
- PHP版本常用的排序算法汇总
- JavaScript实现多种排序算法
- php 地区分类排序算法
- js三种排序算法分享
- Javascript中的常见排序算法
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- Java数据结构及算法实例:选择排序 Selection Sort
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- 排序算法的javascript实现与讲解(99js手记)
- C++中十种内部排序算法的比较分析
- Java实现几种常见排序算法代码
- 浅谈javascript实现八大排序
- PHP简单选择排序算法实例
- PHP常用的排序和查找算法
- JavaScript中九种常用排序算法
- STl中的排序算法详细解析
- 算法学习入门之使用C语言实现各大基本的排序算法
- VC++实现选择排序算法简单示例