普林斯顿公开课 算法2-2:选择排序
选择排序就是对数组进行扫描,每次扫描找出最小的元素,并将其提到元素的前面。
动图
http://www.sorting-algorithms.com/animation/20/random-initial-order/selection-sort.gif
代码
public
class
Selection {
public
static
void
sort(Comparable[] li) {
for
(
int
i =
0
; i < li.length; i++) {
int
min = i;
for
(
int
j = i+
1
; j < li.length; j++) {
if
(SortUtil.less(li[j], li[min])) {
min = j;
}
}
SortUtil.exch(li, min, i);
}
}
}
第6行:注意j=i+1。由于已经将i赋值给min了。不是必需再将li[i]与li[j]比較。
命题
选择排序使用了约N^2/2次比較。使用了N次交换。
长处
排序算法的执行时间和输入无关,都是N^2复杂度。
数据的交换次数是最少的,都是N次交换。
普林斯顿公开课 算法2-2:选择排序相关推荐
- 普林斯顿公开课 算法1-5:算法理论
本节主要解说的是算法的复杂度. 算法性能 算法的性能分为三种: 最佳情况:计算时间最短的情况 最差情况:计算时间最长的情况 平均情况:随机输入的期望开销 以二分查找为例 最佳情况是1,由于第一次就有可 ...
- Java常见排序算法之直接选择排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- 排序算法:简单选择排序算法实现及分析
简单选择排序算法介绍 简单选择排序(Simple Selection Sort)就是通过n-1次关键字排序之间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i(1<=i<=n)记 ...
- java选择排序代码_Java排序算法总结之选择排序
本文实例讲述了Java排序算法总结之选择排序.分享给大家供大家参考.具体分析如下: 选择排序的基本操作就是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部 ...
- Java排序算法之直接选择排序
Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...
- js排序算法详解-选择排序
全栈工程师开发手册 (作者:栾鹏) js系列教程5-数据结构和算法全解 js排序算法详解-选择排序 相对于冒泡排序还有一种类似的方法就是选择排序,顾名思义就是选择性排序,什么意思呢? 这么来理解,假设 ...
- 《数据结构与算法》实验:排序算法实验比较——选择排序 堆排序
<数据结构与算法>实验和课程Github资源 <数据结构与算法>实验:线性结构及其应用--算术表达式求值 <数据结构与算法>实验:树型结构的建立与遍历 <数据 ...
- 排序算法六:选择排序之直接选择排序
排序算法六:选择排序之直接选择排序 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 在我的博文<"主宰世界"的10种算法短评& ...
- 总结c语言基础算法——冒泡排序法和选择排序法
1.首先无论何种排序方法其最终目的是按要求将所给数据进行排序.而在C语言中可以有很多排序的方法,这里着重介绍的是常用的较为基础和重要的算法--冒泡排序法和选择排序法. 下面将举一个例子进行讲解: 要求 ...
最新文章
- python 线程锁 共享全局变量 线程通信
- 鸿蒙系统开发者公测,公测尝鲜开启!华为Mate40/P40开始和安卓渐行渐远
- 前端自动化测试工具:SlimerJS、phantomJS 和 CasperJS
- LeetCode 1360. 日期之间隔几天(闰年判断)
- 20 Alarms, sigaction(), and Reentrant System Calls
- 关于python注释下面选项描述错误的是_关于Python的列表,以下选项中描述错误的是______...
- Matlab程序如何打包
- servlet返回json到html页面,使用easyui从servlet传递json数据到前端页面的两种方法
- kuangbin专题
- visual foxpro v6.0官方版
- 面试时如何做自我介绍?聪明的应聘者只聚焦1点
- 牛客网Verilog快速入门题目收获——异步复位的串联T触发器(VL2)
- 华为OD机试 - 乱序整数序列两数之和绝对值最小
- RuntimeError: Couldn‘t resolve requests
- FreeRTOS软件定时器 基于STM32
- linux VFS概述以及内核源代码分析
- 鸿蒙宴中座次理解错的是,鸿门宴的座位安排用意是什么
- ecg 幅度_ECG原理与综述.ppt
- 攻防世界-misc-流量分析1
- 知到网课营养与食疗学题库及真题答案