选择排序概念

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 --form baike

思想
*     每次从待排序的数据元素中选出最小或最大的一个元素,存放在序列的起始或末尾位置
*     长度为n的数组一共需要进行n-1趟排序,每趟排序会进行一次值的交换;
*     当进行下一次排序时,范围缩小1

代码实现

package com.lll.datastructure.sort;import java.util.Arrays;/***
* @ClassName: SelectionSort
* @Description: 选择排序
* @Author: liulianglin
* @DateTime 2022年9月7日 上午9:12:13
*
* 选择排序思想:
*   每次从待排序的数据元素中选出最小或最大的一个元素,存放在序列的起始或末尾位置
*   长度为n的数组一共需要进行n-1趟排序,每趟排序会进行一次值的交换;当进行下一次排序时,范围缩小1*/
public class SelectionSort {public static void main(String[] args) {// 待排序数据int[] arr = {1,3,2,4,7,54,11,34,9}; // 记录当前趟数查找到的最大值的数组下标 int max;// 交换变量int temp;System.out.println("排序前:" + Arrays.toString(arr));// 外层控制循环需要排序的趟数for(int i = 0; i < arr.length - 1; i++) {// 每一趟都默认数组第一个元素为最大值max = 0;// 内循环控制遍历数组的个数(每趟减1),并得到最大数的下标for (int j = 0; j < arr.length - i; j++) {if (arr[j] > arr[max]) {max = j;}}// 将交换变量设置为最大值, 将最大值暂存一下temp = arr[max];// 将当前最大值设置为当前未排序序列的最后一个元素值arr[max] = arr[arr.length - 1 - i];// 将刚才缓存的最大值,设置为当前未排序队列的最后一个元素,完成交换arr[arr.length - 1 - i] = temp;}System.out.println("排序后:" + Arrays.toString(arr));}
}

关键步骤:

1. 首先定义两个变量:分别表示最大值标 和 交换变量;

2. 通过外层for循环,控制排序的趟数;

3. 通过内循环控制每趟需要遍历数组的次数,每趟会较上一趟减1,每次会得到最大值的下标。再下一趟外循环会将这个下标重新置为0;

4. 每趟找到最大值后,将交换变量设置为最大值,目的是将最大值进行一个暂存;

5.然后将最大值设置为当前未排序序列的最后一个元素;

6.最后将第4步缓存的最大值,设置为的当前未排序序列的最后一个元素

7.至此完成数据交换,继续进行步骤2,直到数据数据有序。

执行结果

排序算法--选择排序(Java实现)相关推荐

  1. Java排序算法——选择排序

    Java排序算法--选择排序(Selection sort) 传送门 冒泡排序 插入排序 简述 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找 ...

  2. C语言基础排序算法-选择排序

    C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...

  3. C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序

    常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...

  4. python排序算法-选择排序

    python排序算法-选择排序 一.选择排序 1.一趟排序纪录最小的数,放在第一个位置 2.再一次排序记录列表无序区最小的数,放在第二个位置 关键 有序区.无序区.无序区最小数的位置 代码 def s ...

  5. 十大经典排序算法-选择排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  6. 排序算法-选择排序-堆排序

    排序算法-选择排序-堆排序 堆排序是一种树型选择排序方法.在排序过程中,将 L [ 1... n ] L[1 ... n] L[1...n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点 ...

  7. 排序算法---选择排序(java版)

    简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...

  8. 排序算法——选择排序法(Select Sorting)

    选择排序(Select Sorting) 基本介绍 ​ 选择排序也属于内部排序法,是从预排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的 选择排序思想 ​ 选择排序(Selec ...

  9. 数据结构(Java)-排序算法-选择排序

    选择排序: 选择排序也是一种简单的排序方法.它的基本思想是: 对于总共n个元素的数组arr: 第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换, 第二次从arr[1]~arr[n ...

最新文章

  1. 数据分析需求转型与商业模式重构
  2. python根据表格数据生成折线图_Python交互图表可视化Bokeh:4. 折线图| 面积图
  3. Build path contains duplicate entry
  4. python math.asin
  5. 64位 int 占几个字节_面试常考,项目易错,长文详解C/C++中的字节对齐
  6. python post请求实例_Python3模拟curl发送post请求操作示例
  7. Weex小册—从0搭建一个Weex项目
  8. linux下一个网卡配置多个ip【虚拟ip】
  9. jq ui-selectable中click单击事件,dblclick双击事件无效
  10. R语言线性混合效应模型实战案例
  11. 来吧 兄弟萌 我们一起学做粥
  12. echarts (二) 之canvas设置地图背景图
  13. 云计算机的价值,云计算现在的价值都有哪些?
  14. android开发实名认证弹窗,fusionAAS-android-demo
  15. 使用Python获取bing壁纸接口
  16. 机器自动翻译古文拼音 - 十大宋词 - 江城子·乙卯正月二十日夜记梦 苏轼
  17. Vscode——编辑setting.json,但显示“无法在只读编辑器中编辑”的一种解决方法
  18. 新版gsp计算机培训课件,新版gsp《药品经营质量管理规范》释义v0708ppt课件.ppt
  19. cisco ap 上线不成功
  20. python2.7交通标志识别图_利用图像处理技术识别道路交通标志牌

热门文章

  1. Android VCard通讯录导入导出详解
  2. (c语言)三角形判断
  3. html怎么插动态图片不显示不出来,layer插件layer.photos()动态插入的图片无法正常显示...
  4. Virtualbox6.1 共享文件夹设置
  5. html5 input email,html - HTML5 Email input pattern attribute - Stack Overflow
  6. 大学计算机教授的工资多少,大学教授的收入大概有多少?很多人都不知道!
  7. Java:案例理解-接口回调
  8. 如何在 Web 应用里消费 SAP Leonardo 的机器学习 API
  9. 弘辽科技:拼多多团购价怎么设置?如何提高成团率?
  10. HBO《硅谷》中的二进制码