一、算法思想

  • 第一趟简单选择排序时,从第一个记录开始,通过n-1次关键字的比较,从 n 个记录中选出关键字 最小的 记录,并和 第一个记录 进行交换。
  • 第二趟简单选择排序时,从第二个记录开始,通过 n-2 次关键字的比较 ,从 n -1
    个记录中选出关键字最小的记录,并和第二个记录开始进行交换。

  • 第i趟排序时,从第 i 个记录开始, 通过 n-i 次关键字的比较,从 n -i +1 个记录中选出 关键字最小的记录,并和第 i 个记录 进行 交换。
  • 如此反复,经过 n -1 趟选择排序,将把 n -1 个记录 排到位,剩下 一个最小 记录 直接 在最后,所以 共需 n - 1 趟 简单选择排序,

两个子序列 ,左边的为有序,右边的为无序,在右边未排序的元素中找到 最小的 ,然后放到已排序序列的末尾,依次类推,知道排序完成。

二、算法分析

在简单选择排序过程中,所需移动记录的次数比较少,最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。最坏情况下,即第一个记录最大,其余记录从小记录从小到大有序排列,此时移动的次数最多,为3(n-1)次,
简单选择排序过程中需要进行的比较次数与初始状态下待排序的记录序列的排列情况有关,当 i= 1,需要进行 n - 1次 比较; 当 n = 2 时,需要进行 n - 2 次 比较 ; 以此,共需要进行的比较矮次数是:n (n - 1) / 2。

即进行比较操作的时间复杂度为:

代码实现

 public class SelectSort {public static void selectSort(int[] arr) {if (null == arr || arr.length <= 0) {return;}for (int i = 0; i < arr.length; i++) {int minIndex = i; // 最小值元素的索引位置for (int j = i + 1; j < arr.length; j++) {if (arr[j] < arr[minIndex]) { // 从遍历到的 第 i 个 元素 往后 依次比较 找出最小 元素索引minIndex = j;    // 找到 最小值的索引赋给 minIndex}}if (i != minIndex) { //  //如果不是无序区的最小值位置不是默认的第一个数据,则交换之。int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}System.out.print("排序后结果为:");for (int num : arr) {System.out.print(num + " ");}}public static void main(String[] args) {int[] arr = {5,1,2,3,1,8,4};selectSort(arr);}
}

排序-------简单选择实现(Java实现)相关推荐

  1. 选择排序—简单选择排序(Simple Selection Sort)

    基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...

  2. C语言实现选择排序——简单选择排序算法

    C语言实现简单选择排序 文章目录 C语言实现简单选择排序 简单选择排序算法 1.交换操作 2.简单选择排序算法实现 项目完整代码 运行效果图 简单选择排序算法 1.交换操作 //交换实现 void s ...

  3. C++实现各种选择排序(简单选择排序,堆排序)

    简单选择排序: 代码如下: #include <iostream> using namespace std;void SelectSort(int *a, int len) {//数组下标 ...

  4. 20180321选择排序-简单选择排序

    2019独角兽企业重金招聘Python工程师标准>>> 前置知识 selection sort 选择排序的基本思想:从待排序的序列中选出最大值(最小值),交换该元素与待排序序列头部元 ...

  5. c语言用sort函数选择排序,简单选择排序(Simple Selection Sort)的C语言实现

    简单选择排序(Simple Selection Sort)的核心思想是每次选择无序序列最小的数放在有序序列最后 演示实例: C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp) 原创文章, ...

  6. 选择排序-简单选择排序

    简单选择排序是一种不稳定的选择排序. #include<stdio.h> void selectSeletSort(int a[],int n) {     int i,j,k;     ...

  7. DS排序--简单选择排序

    题目描述 给出一个数据序列,使用简单选择排序算法进行升序排序 输入 第一行输入t,表示有t个测试示例 第二行输入n,表示第一个示例有n个数据(n>1) 第三行输入n个数据,都是正整数,数据之间用 ...

  8. 七种排序------简单选择排序(Simple Selection Sort)

    简单选择排序法就是通过 n - i 次关键字间的比较,从 n - i + 1个记录中选出关键字最小的记录,并和第 i 个记录交换. 代码如下: void SelectSort(SqList *L) { ...

  9. 数据结构/排序/选择排序/简单选择排序

    原理 介绍: 原理:每趟排序记录最小记录的索引后交换 类比:猴子搬苞谷,喜欢更大的苞谷.猴子经过1排苞谷,每经过1个苞谷就与心中的苞谷对比,更大就记录当前苞谷的位置,走完这一排苞谷,心中的那个苞谷就是 ...

最新文章

  1. PCL点云库用贪婪投影三角法网格化实现点云的表面重建
  2. SAP 如何定义后台job
  3. jlink怎么调试linux程序_纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)
  4. 卡巴斯基发现新型恶意软件StoneDrill,或与 Shamoon有关
  5. rust最低什么显卡能游戏_腐蚀Rust配置要求汇总 腐蚀Rust游戏配置要求是什么_游侠网...
  6. Android 通过WebService进行网络编程,使用工具类轻松实现
  7. POJ 1979 红与黑
  8. ones eye rand randn diag randperm
  9. 2021-08-24梦笔记
  10. 解决QQ聊天自动转成表情
  11. 微信小程序-中英文文本换行的小问题
  12. 《从0开始学大数据》的启示
  13. 你控制不了情绪,怎么过得好这一生?
  14. 使用计算机自适应测验大型测验,计算机自适应测验方法与流程
  15. 用php写后端怎么使用模板_用PHP保守秘密
  16. 数据结构课程设计-哈夫曼树及其应用
  17. oracle rfs进程过多,oracle 11.2 DataGuard少了日志应用进程RFS
  18. 做相关性分析时,如何排除奇异值Outliers,以增加相关分析的准确性
  19. 按课程查询学生成绩C语言,C语言课程设计. 根据学号等信息查询学生成绩
  20. 英特尔On技术创新峰会:携手开发者打造开放生态系统

热门文章

  1. Java八种基本数据类型对应的包装类
  2. RTFN:一种用于时间序列分类的鲁棒时间特征网络(概要解析)
  3. 谁在靠你的“脸”赚钱?
  4. 点云格式解读LAS/PCD
  5. html图片浮动教程,CSS Float(浮动)
  6. 浅析无人值守+智慧巡检变电站安全管控系统设计方案
  7. Android Studio 添加图标
  8. 仿个人税务 app html5_你下载的个税APP可能是假的!当心抢你的钱!
  9. opencv-基于颜色的目标检测(含代码)
  10. C语言实现中文模糊查询