`

算法回顾之六:选择排序

 
阅读更多

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

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

选择排序

 

基本原理:

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

 

程序实现:

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。

稳定性:不稳定

 

分享到:
评论

相关推荐

    算法与程序设计:知识点回顾.ppt

    算法与程序设计知识点回顾 算法是计算机科学中的一种解决问题的方法,包括算法的基本概念、算法设计和分析、算法实现等方面。下面是算法与程序设计的知识点回顾: 第一章 算法概述 1. 算法的基本概念和性质: * ...

    实验五:内部排序.docx

    - 选择排序:每次选择最小(或最大)元素放入正确位置,如简单选择排序。 - 归并排序:分治法,将数据分成小块排序后再合并,时间复杂度为 O(n log n)。 - 基数排序:非比较排序,利用多关键字思想,如基数排序,...

    C语言实现二叉排序树生成算法

    根据给定的信息,本文将详细解释如何使用C语言实现二叉排序树的生成算法,并重点关注平衡二叉排序树的创建及遍历。 ### 一、二叉排序树基础概念 在深入了解具体的C语言代码实现之前,我们先来回顾一下二叉排序树...

    数据结构排序实验报告

    1. **基础知识回顾**:在开始实验前,需回顾教科书中关于排序算法的基础理论知识。 2. **编程实现**: - 使用C语言编写程序,实现对一组随机生成的数据进行不同排序算法的处理。 - 实现的排序算法包括简单插入排序...

    数据结构排序算法python

    本资源包含了一个名为`SortSolution.py`的Python文件,里面实现了几种经典的排序算法,包括插入排序、选择排序、冒泡排序和快速排序。 1. **插入排序**: 插入排序是一种简单直观的排序算法,它的工作原理是通过...

    数据结构 与 基础算法,语雀导出的

    数据结构与基础算法 ...问题梳理是指对算法和数据结构的总结和回顾。常见的问题梳理有: * 排序算法的优缺点 * 查找算法的优缺点 * 图结构的应用 * 树结构的应用 * 队列结构的应用 * 栈结构的应用

    C经典算法之快速排序法(二)

    ### C经典算法之快速排序法(二) #### 知识点概述 本篇文章将深入探讨快速排序算法的一个改进版本,并通过具体的代码实现来展现这一优化思路。在快速排序法(一)的基础上,本文重点关注轴的选择对算法性能的影响...

    用php实现几种常见的排序算法共6页.pdf.zip

    在IT行业中,排序算法是计算机科学的基础之一,尤其在编程领域,掌握各种排序算法对于提升程序性能至关重要。PHP作为一门广泛使用的服务器端脚本语言,虽然它的主要应用场景并不以性能著称,但在处理数据时,了解和...

    冒泡排序详细教程学习攻略 冒泡排序知识点总结重点.docx

    回顾排序的基本概念,理解排序的目的和重要性。 查阅相关资料,了解常见的排序算法及其特点。 设定学习目标,明确要掌握的冒泡排序知识点。 二、冒泡排序的基本概念 重点内容: 定义冒泡排序,解释其名称的由来。 ...

    算法:C语言实现(第5部分).

    排序算法是算法学习中最基础也是最重要的部分之一,在C语言中实现这些算法不仅可以加深对算法本身的理解,还能提升编程能力。 - **冒泡排序**:通过重复遍历要排序的列表,比较每对相邻元素并交换顺序来实现排序。 ...

    30个经典算法汇总_带文档和源码

    1. **排序算法**:如快速排序、归并排序、堆排序、冒泡排序、插入排序等,它们是处理大量数据时的基础,用于按照特定顺序排列元素。 2. **搜索算法**:包括二分查找、广度优先搜索(BFS)和深度优先搜索(DFS),在数据...

    45个经典的算法Flash动画演示

    1. **排序算法**:包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。这些是基础的算法,用于对数据进行有效排列,理解它们的工作原理有助于优化时间复杂度。 2. **查找算法**:如线性查找、二分查找。线性...

    算法导论课后习题与思考题答案合集

    - **第2章:开始**:包括对排序、选择和优先队列等相关基础知识的回顾,以及习题解答。 - **第3章:函数的增长**:深入探讨时间复杂度的概念,以及如何分析算法的效率。 - **第4章:递归式**:介绍递归算法的设计...

    综合排序算法(VB编写)

    冒泡排序是最简单的排序算法之一,通过重复遍历数组,比较相邻元素并根据需要交换它们的位置来完成排序。如果某次遍历没有发生任何交换,说明数组已经排序完成。 2. **选择排序(Selection Sort)** 选择排序的工作...

    数据结构实验报告--链式基数排序算法.doc

    链式基数排序是一种非比较型整数排序算法,它的原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。在描述中提到的实验报告中,主要目标是实现一个链式基数排序算法,用于对一组数据进行最低位优先的排序...

    数据结构和算法-思维导图.pdf

    - 各种排序算法如冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、基数排序和计数排序的时间复杂度。 - 排序算法的稳定性,例如快速排序是不稳定的,而归并排序是稳定的。 3. **字符串处理...

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

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

Global site tag (gtag.js) - Google Analytics