首页 > 其他分享 >选择排序

选择排序

时间:2024-08-01 21:06:39浏览次数:5  
标签:arr 12 23 46 元素 选择 排序

思想:选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
for (int i = 0; i < length-1; i++) { for (int j = i + 1; j < length; j++) { if (arr[i] > arr[j]) { k = arr[i]; arr[i] = arr[j]; arr[j] = k; } } }
分析:假若将元素从小到大排序:i=0时,j=1,j直至length-1,将第一个元素与后面所有元素相比较,若有比i=0对应元素小的,则将二者调换位置,否则不变。
i=1依次到length-1得出最终的结果(注意在比较的过程中,前面每个索引对应的元素可能会变,不要混淆)
举例:12 23 8 46 3
i=0,j=1:12 23 8 46 3
i=0,j=2:8 23 12 46 3
i=0,j=3:8 23 12 46 3
i=0,j=4:3 23 12 46 8
一:找出了第一小的元素3,下一轮比较不动
i=1,j=2:3 12 23 46 8
i=1,j=3:3 12 23 46 8
i=1,j=4:3 8 23 46 12
二:找出了第二小的元素8,下一轮比较不动
i=2,j=3:3 8 12 46 23
i=2,j=4:3 8 12 46 23
三:找出来第三小的元素12,下一轮比较不动
i=3,j=4:3 8 12 23 46
四:找出来倒数第二小的元素23,比较结束

标签:arr,12,23,46,元素,选择,排序
From: https://www.cnblogs.com/zhuzhuya/p/18337547

相关文章

  • 排序工具类 - SortUtils
    packagecom.kurumi.util;importorg.springframework.stereotype.Component;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importjava.util.Map;publicclassSortUtils{/***将list安装sortMap中的传参排......
  • 选择语句加循环语句题目练习
    选择语句+循环语句作业一、填空题Java中有两种类型的选择结构的控制语句,分别是if语句和switch。在JavaJDK1.7之前,switch只能支持byte、short、char、int或者其对应的封装类以及Enum类型。在JDK1.7中又加入了String类型。for循环的语法格式是for(表达......
  • 文件系统类型详解及选择指南
    文件系统类型详解及选择指南大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!文件系统是操作系统管理存储设备的一种方式,负责文件的存储、读取和管理。不同的文件系统有不同的特性和适用场景。了解这些文件系统类型有助于我们根据需求选择最合适的文件系统......
  • 冒泡排序
    冒泡排序(BubbleSort)冒泡排序是一种简单的交换排序算法。原理冒泡排序的每一趟都需要从第一位开始进行相邻的两个数的比较,将较大的数放在后面,比较完毕之后向后挪一位继续比较下面两个相邻的数的大小关系,重复此步骤,直到最后一个还没归位的数。示例:对数组[3,13,8,11,6,......
  • 冒泡排序
    特点:每一轮排序是将相邻的两个元素比较大小,最终是一个从小到大或者从大到小的有序序列。规律:1、轮次的规律:总共有n个元素,则需要比较n-1次2、每一轮的比较规律:每一轮的比较规律比上一轮-1次代码实现思想:至少需要两个变量参与编码,一个变量控制轮次,一个变量控制每一轮次中比较的次......
  • 冒泡排序的具体思想和算法实现以及改进
    冒泡排序——稳定算法从小到大排序:0~length-1对比a[0]和a[1],如果前一个大于后一个,交换位置。对比a[1]和a[2],如果前一个大于后一个,交换位置。对比a[2]和a[3],如果前一个大于后一个,交换位置。...对比a[length-2]和a[length-1],如果前一个大于后一个,交换位置。第一轮结果下......
  • 选择插入排序改进思路加算法实现
    首先默认第一个元素是已排序的,剩下元素是待排序的,从第二个元素开始遍历取出待排序区域的第一个元素element和已排序区域的最后一个元素a[j]往前开始比较大小若待排元素大于等于最后一个元素则直接跳出循环将待排元素赋值给a[j+1]若待排元素小于最后一个元素将最后一个元......
  • 折半插入排序算法思想及代码实现
    折半插入排序(BinaryInsertionSort)是插入排序算法的一种优化版本。插入排序的基本思想是将一个记录插入到已经排序好的有序表中,从而得到一个新的、记录数增加1的有序表。传统的插入排序在寻找插入位置时,采用的是顺序比较的方式,即逐个与有序表中的元素进行比较,直到找到比待插入......
  • 无限制报表制作,节省费用的新选择
    许多企业在报表制作上投入了大量资金,使用各种收费软件,往往只能满足基本需求,且操作复杂,让人感到无比头疼。不过最近我发现之前一直在做数据大屏的山海鲸可视化,现在新增了报表功能,不仅各种功能都可以免费使用,而且不像其他一些报表软件一样会有许多限制,本人亲自体验了一下报表功能,这......
  • 排序算法总结
    排序算法是数据结构与算法中的一个重要部分,用于对一组数据按照特定顺序进行排列。常见的排序算法有很多,每种算法都有其独特的时间复杂度、空间复杂度和稳定性等特性。以下是一些常用的排序算法及其特点:冒泡排序(BubbleSort):时间复杂度:平均情况下为 O(n2)O(n2),最坏情况下也是......