选择排序学习
来源:互联网 发布:单片机 精确测量电阻 编辑:程序博客网 时间:2024/06/07 02:02
参考资料来源:
http://zh.wikipedia.org/wiki/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F
http://baike.baidu.com/view/547263.htm
选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾(目前已被排序的序列)。以此类推,直到所有元素均排序完毕。
复杂度分析
选择排序的交换操作介于和次之间。选择排序的比较操作为次之间。选择排序的赋值操作介于和次之间。
比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2。 交换次数O(n),最好情况是,已经有序,交换0次;最坏情况是,逆序,交换n-1次。 交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CPU时间多,n值较小时,选择排序比冒泡排序快。
排序过程
【示例】: 初始关键字 [49 38 65 97 76 13 27 49] 第一趟排序后 13 [38 65 97 76 49 27 49] 第二趟排序后 13 27 [65 97 76 49 38 49] 第三趟排序后 13 27 38 [97 76 49 65 49] 第四趟排序后 13 27 38 49 [76 97 65 49 ] 第五趟排序后 13 27 38 49 49 [97 65 76] 第六趟排序后 13 27 38 49 49 65 [97 76] 第七趟排序后 13 27 38 49 49 65 76 [97] 最后排序结果 13 27 38 49 49 65 76 97学习代码:
package com.aoeai.sort;import java.util.Arrays;/** * * 选择排序 * * @author wyyl1 * 算法说明来源:http://zh.wikipedia.org/wiki/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F * * 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。 * 首先在未排序序列中找到最小元素,存放到排序序列的起始位置, * 然后,再从剩余未排序元素中继续寻找最小元素, * 然后放到排序序列末尾(目前已被排序的序列)。 * 以此类推,直到所有元素均排序完毕。 * * @date 2012-9-11 */public class SelectionSort {public static void main(String[] args) {Integer[] arr = {5,9,1,32,55,12,90,2,12};System.out.println("原始数组:" + Arrays.toString(arr));sort(arr);}public static void sort(Integer[] arr){int searchIndex = 0; // 搜索最小值的索引for(int j = 0; j < arr.length; j++){int minIndex = searchIndex; // 本次循环中最小值的索引int minValue = arr[searchIndex]; // 本次循环中的最小值// 找出最小值for(int i = searchIndex; i < arr.length - 1; i++){int nextIndex = i + 1; // 下一个索引if(arr[i] < arr[nextIndex] && arr[i] < minValue){minIndex = i;minValue = arr[i];}else if(arr[nextIndex] < minValue){minIndex = nextIndex;minValue = arr[nextIndex];}}// 交换if(arr[searchIndex] > minValue){arr[minIndex] = arr[searchIndex];arr[searchIndex] = minValue;}searchIndex++;}System.out.println("排序数组:" + Arrays.toString(arr));}}
- 选择排序 学习
- 选择排序学习
- 选择排序学习
- 选择排序的学习
- 数据结构学习--选择排序
- 选择排序---学习笔记
- C语言学习-选择排序
- 数据结构学习之选择排序
- 算法学习之选择排序
- 算法学习笔记--选择排序
- java的选择排序学习
- 算法学习之选择排序
- java学习之选择排序
- 【初探】选择排序 学习笔记
- java排序算法学习(一)--选择排序
- 选择排序和冒泡排序的学习
- 算法学习之排序算法:选择排序
- 【算法学习】排序算法 - 简单选择排序
- 使用最近浏览器批量下载有序图片
- Microsoft Enterprise Library 5.0 系列(一) : Caching Application Block (初级)
- 虚拟机:安装VM Tools和共享文件夹
- VSS问题
- 配置阶段总结
- 选择排序学习
- java.lang.IllegalArgumentException: already added: Lorg/apache/poi/EncryptedDocumentException;
- 平台+插件软件设计思想基于COM原型实现的代码剖析
- 漾七夕
- C# NPOI 操作excel
- HDU 3079 Vowel Counting
- 布局中@null的代码实现方式
- 知道国外投行为什么要中国开放证券融资不?
- Microsoft Enterprise Library 5.0 系列(一) Caching Application Block (高级)