`

算法回顾之六:选择排序

 
阅读更多

算法回顾系列第六篇:选择排序

-----------------------------------------

选择排序

 

基本原理:

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最前(或最后),直到全部待排序的数据元素排完。

 

程序实现:

public void sort(int[] data) {
		//i代表已经排序的元素个数.
	    for(int i=0; i<data.length; i++){
	    	//lowIndex代表最小元素的位置.
	    	int lowIndex=i;
	        for(int j=data.length-1; j>i; j--){
	          //j从后向前将每个元素的值与最小元素进行比较,如果比最小元素还小,则设置该位置为最小元素
	        	if (data[j] < data[lowIndex]){
	                 lowIndex=j;
	            }
	        }
	        //交换最小元素位置
	        swap(data,i,lowIndex);
	        System.out.println(Arrays.toString(data));
	    }
	}
	
	public void swap(int[] data,int first,int second){
		int temp;
		temp=data[first];
		data[first]=data[second];
		data[second]=temp;
	}

上面程序中:

遍历所有元素,并将已排序元素放在了最前。

每趟排序时,最小元素坐标默认为已排序元素的下一个元素(即待排序元素,初始为0)。

然后从后向前遍历每个元素并与最小元素进行比较,如果小于最小元素,则修改最小元素坐标位置。

每趟排序结束时,将最小元素与当前待排序元素交换位置,完成一趟排序。

重复以上步骤直到全部元素都排完序。

 

性能分析:

时间复杂度O(n^2)

 

空间复杂度:1。

稳定性:不稳定

 

分享到:
评论

相关推荐

    百度云盘 pdf《大数据架构和算法实现之路:电商系统的技术实战》百度云盘-带标签目录

    HDFS 回顾………·…… 382 11 .3.3 批量数据分析一-Hive 简介 ……··..................… 383 11.3.4 Flume、 HDFS 和 Hive 的 整合方案 …··.......... .....… 386 11.4 ...

    算法基础.打开算法之门.[美]托马斯 H.科尔曼(带详细书签)

    对于计算机科学专业的学生和从业者,本书对每个计算机科学家必须理解的关键算法都进行了很好的回顾。对于非专业人士,它确实打开了每天所使用的工具的核心——算法世界的大门。”—— G. Ayorkor Korsah,阿什西大学...

    数据结构、算法与应用_C++语言描述排序总结.

    数据结构、算法与应用_C++语言描述排序总结,关注排序

    分布式算法 作者:(美)Nancy A.Lynch 舒继武 李国东part1

    15.5.2 同步算法:回顾 296 15.5.3 ghs算法:概要 296 15.5.4 更详细的算法 297 15.5.5 特殊消息 299 15.5.6 复杂度分析 301 15.5.7 ghs算法的正确性证明 301 15.5.8 简单“同步”策略 302 15.5.9 应用到领导者选举...

    algorithms_reviews:每天有1(或更多)评论算法问题。

    我们将回顾一下Na Dongbin的Facam算法讲座中解决的问题,重点是尚未很好解决的问题。 进行检查,直到您解决这里出现的所有问题为止 :star: 白俊 基本数据结构 : :hollow_red_circle: : :cross_mark: : :...

    数据结构、算法与应用:C++语言描述(原书第2版)第二部分

    18.4.2 排序算法的下限 第19章 动态规划 19.1 算法思想 19.2 应用 19.2.1 0/1背包问题 19.2.2 矩阵乘法链 19.2.3 所有顶点对之间的最短路径 19.2.4 带有负值的单源最短路径 19.2.5 网组的无交叉子集 19.3 参考及推荐...

    数据结构与算法:语言描述(中英文)

    第3章是对基础排序算法的介绍,例如冒泡排序和插入排序。而第4章则研究了用于内存查找的最基本算法,顺序查找和二叉查找。 第5章探讨了两种经典的数据结构:堆栈和队列。本章节强调的重点是这些数据结构在解决日常...

    数据结构与算法:C++描述

    本书是关于计算机科学与工程领域的基础性研究科目之一——数据结构与算法的专著。 本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之...

    C语言版数据结构与算法分析-严蔚敏经典视频教程

    06-003习题课:栈的基本操作、KMP算法回顾 06-004二叉树的定义、性质与存储结构 06-005二叉树的前序、中序和后序遍历的递归与非递归算法 06-006统计二叉树中叶子结点个数、按给定的先序序列建立二叉链表 06-007线索...

    算法概论.pdf

    6.1Shortestpathsindags,revisited(回顾:有向无环图中的最短路径) 6.2Longestincreasingsubsequences(最长 递增子序列) 6.3Editdistance(编辑距离) 6.4Knapsack(背包问题) 6.5...

    【精品课件】数据结构与算法 数据结构与C语言 data structure课程 第8章 排序(共223页).ppt

    【课程简介】 本课程适合所有需要弥补数据结构或对数据结构感兴趣的同学,课件内容制作精细,由浅入深,适合入门或进行知识回顾。 【完整课程列表】 ...数据结构与算法 数据结构与C语言 第8章 排序(共223页).ppt

    小甲鱼_数据结构与算法(98集全)

    道01数据结构和算法绪论.... mp4 立98总结回顾.mp4画65_最短路径(迪杰斯特拉算法).mp466_最短路径( 弗洛伊德算法) . mp4口67拓扑排序. mp4二68关键路径.mp4口69_查找算法. mp4 画69关键路径(代码讲解).mp4

    算法:竞争性编程所需的算法

    内容:搜索算法线性搜寻二进制搜索三元搜索排序算法气泡排序选择排序插入排序合并排序快速分类基数排序Bogo排序最短路径算法迪克斯特拉弗洛伊德·沃沙尔通用数据结构堆队列叠数组链表使用的语言: C ++ PythonJavaC ...

    Ch5-MapReduce算法设计1

    1.MapReduce可解决哪些算法问题 2.回顾:MapReduce处理流程 3.MapReduce排序算法 4.MapReduce单词同现分析算法 5.Ma

    【1.数据结构和算法学习目录】

    本专栏记录研究生期间算法学习过程,从基础回顾到算法落地。算法学习范围为蓝桥杯官网提供的命题范围: 计算机算法:枚举、排序、搜索、计数、贪心、动态规划、图论、数论、博弈论*、概率论*、计算几何*、字符串算法...

    【精品课件】数据结构与算法 数据结构与C语言 data structure课程 第4章 串、数组和广义表(共66页).ppt

    【课程简介】 本课程适合所有需要弥补数据结构或对数据结构感兴趣的同学,课件内容制作精细,由浅入深,适合入门或进行知识回顾。 【完整课程列表】 ...数据结构与算法 数据结构与C语言 第8章 排序(共223页).ppt

    C++实现顺序排序算法简单示例代码

    本文实例讲述了最直接的顺序排序法VC++示例代码,还记得以前上学时候这是计算机的必考题,而且在排序算法中,顺序排序似乎是最简单的了,也是最容易掌握的。现在列出来让大家重新回顾一下! 具体代码如下: //顺序...

    算法分析 2-14章.pdf

    科大软院《算法导论课件》 第2章 算法基础 2.1 插入排序 2.2 分析算法 2.3 设计算法 2.3.1 分治法 2.3.2 分析分治算法 第3章 函数的增长 3.1 渐近记号 3.2 标准记号与常用函数

    leetcode叫数-Algorithm:从LeetCode学习算法和解决算法问题

    leetcode叫数 结构 list 链表 recursive 递归 sort 排序 stack 栈 ...需要回顾 ...冒泡和选择排序不要混淆了,插入排序...基数排序:基数排序要求数据可以划分成高低位,位之间有递进关系,用稳定排序算法依次按低位到高位排

Global site tag (gtag.js) - Google Analytics