首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java选择排序算法

/** 选择排序:执行完一次内for循环后最小一个数放在了数组最前面。 * 每一趟从待排序数据元素中选出最小(或最大)一个元素,顺序放在已排好序数列最后,直到全部待排序数据元素排完。.../ public class SelectSort { /** 排序算法实现,对数组中指定元素进行排序 * @param array 待排序数组 @param from 从哪里开始排序 @param...end 排到哪里 @param c 比较器 */ public void select(Integer[] array) { int minIndex;// 最小索引 /* 循环整个数组(其实这里上界为...array.length - 1 即可,因为当 i= array.length-1 时,最后一个元素就已是最大了,如果为array.length时,内层循环将不再循环),每轮假设 第一个元素为最小元素...,则让让最小元素与第一 个元素交换 */ for (int i = 0; i < array.length; i++) { minIndex = i;// 假设每轮第一个元素为最小元素 // 从假设最小元素下一元素开始循环

72500

排序算法选择排序-java

选择排序 1.1 选择排序基本介绍 选择排序类似于冒泡排序,均属于内排,也可以看做是对冒泡排序优化。因为冒泡排序是比较相邻两个值,然后直接交换。...而选择排序是找到一个最大值或者最小值之后,再进行交换。...1.2 选择排序思想 第一次从 arr[0] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[0] 交换;第二次从 arr[1] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[...1] 交换; 第二次从 arr[2] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[2] 交换; 依次类推。...1.3 选择排序时间复杂度和空间复杂度等 算法名称 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 选择排序 O(n^2) O(n) O(n^2) O(1) 稳定 2.

81220
您找到你想要的搜索结果了吗?
是的
没有找到

Java常见排序算法详解——选择排序

转载请注明出处:https://www.jianshu.com/p/43981d777731 选择排序Simple Selection Sort 概念: 是一种简单直观排序算法。...例如我们一个数组,我们如果需要把较小元素排在前面,把大元素排在后面。 从数组当中,选择出最小那个元素放在第一个位置。 如果没有比当前还小元素,那么就在当前位置不变。...选择排序主要优点与数据移动有关。如果某个元素位于正确最终位置上,则它不会被移动。...选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素序列进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素排序方法中,选择排序属于非常好一种。...: 冒泡排序 代码: Java和Kotlin代码均放在了GitHub上,欢迎Star!

60300

排序算法Java代码实现(一)—— 选择排序

以下几篇随笔都是记录实现八大排序代码,主要是贴出代码吧,讲解什么都没有,主要是为了方便自己复习,哈哈,如果看不明白,也不要说坑哦!...本片分为两部分代码: 常用方法封装 排序算法里需要频繁使用 交换数组中两数位置 操作,另外,为了方便打印数组查看结果,封装一个 ArrayBase.java基类,用来实现swap...方法和printArray方法; 选择排序算法 (一)ArrayBase.java /** * */ package com.cherish.SortingAlgorithm; /** * @...再从数组剩下元素中选择出最小元素,将它与数组第二个元素交换位置。 不断进行这样操作,直到将整个数组排序。...* 再从数组剩下元素中选择出最小元素,将它与数组第二个元素交换位置。 * 不断进行这样操作,直到将整个数组排序

69340

java五大排序算法选择排序

一.选择排序介绍 选出最小一个数与第一个位置数交换 二.选择排序原理分析 第1趟比较:拿第1个元素依次和它后面的每个元素进行比较,如果第1个元素大于后面某个元素,交换它们,经过第1趟比较,数组中最小元素被选出...第n-1趟比较:第n-1个元素和第n个元素作比较,如果第n-1个元素大于第n个元素,交换它们 三.选择排序代码实现 public static void selectionSort(int[] nums...swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } 四.选择排序优化...} // 交换两个数 temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } } 五.选择排序时间复杂度...时间复杂度:O(n²) 空间复杂度:O(1),只需要一个附加程序单元用于交换 稳定性:选择排序是不稳定排序算法,因为无法保证值相等元素相对位置不变,例如 [3, 4, 3, 1, 5]这个数组

19430

是如何击败Java自带排序算法

针对大规模数组还支持更多变种。拿自己仓促写排序算法Java自带算法进行了对比,看看能不能一较高下。这些实验包含了对特殊情况处理。 首先,编写了一个经典快速排序算法。...这个算法通过计算样本平均值来估计整个数组中心点,然后用作初始枢轴。 借鉴了一些Java思路来适当改进快速排序,修改后算法在对小数组进行排序时候直接调用了插入排序。...在这种情况下,排序算法Java排序算法可以达到相同运行时间量级。Wild & al指出,如果排序数组很多重复数据,标准快速排序会比双枢轴快速排序要快。...没有尝试任何字节或汇编级别的分析和优化。在大部分问题中,版本优化程序都远远不能跟Java系统程序相提并论。 一直都想测试脑海里一个简单排序算法称之为Bleedsort。...尽管我写快速排序算法在一定程度上比不过Java自带算法,但是预处理过程很好弥补了这些不足(调用了快速排序Bleedsort 87ms vs Java 自带算法105ms; 938ms vs

82210

Java数据结构和算法总结-冒泡排序选择排序、插入排序算法分析

前言:排序算法地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次、商城商品销量排名、新闻搜索热度排名等等。...也正因为排序应用范围如此之广,引起了许多人深入研究它兴趣,直至今天,排序算法已经出现了很多种。...本篇博文主要介绍常见八种排序算法,总得来说,不同排序算法在不同场景下都有着自己独特优点,例如一下简单冒泡排序选择排序、插入排序不仅思路简单,有利于我们理解,而且在小规模数据量处理中并不逊色...此时,这组数最后一个数一定是最大了,然后进行下一轮如此比较到倒数第二个数,再下一轮比较到倒数第三个,如此循环,直到一轮比较到第二个数结束,最终这一组数就是有序了。   ...简单排序 选择排序 O(N^2) 速度比冒泡快。 简单排序 插入排序 O(N^2) 速度是冒泡二倍,优于选择排序,在基本有序数据中表现出色。 简单排序

95490

排序3】选择排序:高效排序算法之美

选择排序 选择排序基本思想: 每一趟(第i趟)在后面n-i+1(i=1,2,···,n-1)个待排序元素中 选取关键字最小元素,作为有序子序列第i个元素,直到n—1趟做完,待排序元素只剩下一个...1、直接选择排序 直接选择排序是一种简单直观排序算法。...它基本思想是每次从未排序部分中找到最小(或最大)元素,将其与未排序部分第一个元素交换位置,然后缩小未排序部分范围,继续进行选择和交换,直到整个序列有序。...实际中很少使用 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:不稳定 2、堆排序排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计一种排序算法,它是选择排序一种。...今天分享就到这里了,后面还会分享更多排序算法,敬请关注喔!!!✌️

8610

数据结构与算法选择排序Java实现)

选择排序 package com.uplooking.bigdata.datastructure; import java.util.Arrays; public class SelectSort {...(arr)); } /** * 选择排序: * 每次从数组中找到一个最小元素放到前面 * 或者从i位置开始往后找,找一个最小元素和i位置元组进行交换...2, 0, 1, 3, 6, [7], [9], [8]} * 第七趟:比较n-7 * {-2, 0, 1, 3, 6, 7, 8, 9} * 比较次数...:[8, -2, 3, 9, 0, 1, 7, 6] 排序后:[-2, 0, 1, 3, 6, 7, 8, 9] 时间复杂度分析 1.时间复杂度为:O(n^2) 比较次数(n-1) + (n-2) +...... + 2 + 1=(n-1 + 1) * (n-1)/2 = n*(n-1)/2 = n^2/2 - n/2 2.数据排列顺序是可能被改变,这取决于在比较是的比较符号(>还是>=),所以其是不稳定排序算法

50960

深入浅出排序算法-选择排序

前言 大家好,是 Vic,今天给大家带来选择排序算法,希望你们喜欢 选择排序 选择排序比冒泡排序快一些,现在讲选择排序比冒泡排序快一些,也是常用排序算法。...选择排序是第一个人和后续排序的人进行比较,若第一个人大于第二个人,就进行交换,那么这时第一人就是最小,然后这时第一个人和第三个人进行比较,若这时第一个人大于第三个人,就进行交换位置,这时第一个人又换人了...这种就是排序算法,比如有6个人,第一轮要进行5次比较,不是。...temp = arr[count-1]; arr[count-1] = arr[index]; arr[index] = temp; } } } 总结 本文讲了选择排序...,如果您还有更好地理解,欢迎沟通 定位:分享 Android&Java知识点,兴趣可以继续关注

30730

不稳定原地排序算法选择排序

最后,我们也从两个算法入手,引出了评价算法性能两个重要指标:是否是原地排序算法算法稳定性。今天我们再来说一种原地排序算法:** 选择排序**。...为了,我们能够更好地与之前文章中两个算法作比较,我们还是还是将上一篇文章关于排序算法复杂度图片祭出。 ? 选择排序 选择排序算法实现思路有点类似插入排序,也分已排序区间和未排序区间。...原地排序算法是指:数组排序前后,不占用额外内存空间。 答案显而易见,选择排序排序前后只有位置交换,并没有占用额外存储空间,所以选择排序算法是原地排序算法。...是否是稳定算法 同样,回顾一下,什么是稳定算法。稳定算法是指:如果待排序序列中存在值相等元素,经过排序之后,相等元素之间原有的先后顺序不变。 选择排序是一种不稳定排序算法。...正是因此,相对于冒泡排序和插入排序选择排序就稍微逊色了。 简单总结一下,本文讲了一个不稳定原地排序算法选择排序。从示意图一步一步分析选择排序,引出选择排序算法算法复杂度。

2.4K20

选择排序算法:简单但有效排序方法

在计算机科学中,排序算法是基础且重要主题之一。选择排序(Selection Sort)是其中一个简单但非常有用排序算法。本文将详细介绍选择排序原理和步骤,并提供Java语言实现示例。...重复:重复上述选择和交换过程,每次选择并交换一个最小元素,直到整个数组变为已排序状态。 完成:当算法完成时,整个数组都已排序。...b0d3df849986e8e639a0f4382a37f0bb.png Java代码选择排序 以下是使用Java语言实现选择排序算法示例代码: public class Test { public...选择排序算法虽然不如一些高级排序算法快速,但它易于理解和实现,对于小型数据集或接近排序状态数据集可能是一个合理选择。...总结 选择排序虽然不是最高效排序算法,但它是一个简单而直观例子,有助于理解排序算法基本原理。希望本文解释和示例有助于您更好地理解选择排序,并在需要时应用它来解决排序问题。

16421

理解插入排序,希尔排序选择排序算法原理

本篇我们把剩下几种效率一般排序算法给介绍一下,分别是插入排序,希尔排序选择排序。 插入排序(Insert Sort) 插入排序是一种简单直观排序算法。...希尔排序 (Shell Sort) 希尔排序也称递减增量排序算法或,是插入排序一种更高效改进版本。希尔排序是非稳定排序算法。...number = number / 2; } } 选择排序(Select Sort) 选择排序是一种简单直观排序算法。...选择排序采用数组实现方式为非稳定排序方式。...,希尔排序选择排序算法原理和思想,尽管这些排序算法并不是最优选择,并不适合大数据量集下排序,但是了解这些算法基本思想还是很有必要

1.1K10

java几种排序算法(常用排序算法)

大家好,又见面了,是你们朋友全栈君。 常见几种java排序算法 1.插入排序 2.分治排序法,快速排序法 3.冒泡排序 low版 4.冒泡排序 bigger版 5.选择排序 6....比较 1.插入排序 这个打麻将或者打扑克很好理解, 比如有左手一副牌1,2,4,7 ,来一张3牌, 是不是就是手拿着这张牌从右往左插到2,4之间 一次插入排序操作过程: 将待插元素,依次与已排序子数列元素从后到前进行比较...选择排序也是一种简单直观排序算法,实现原理比较直观易懂: 首先在未排序数列中找到最小元素,然后将其与数列首部元素进行交换,然后,在剩余未排序元素中继续找出最小元素,将其与已排序数列末尾位置元素交换..., 下面是排序v1.0版本, 写了个简单数组测试了下发现也没有问题, ok....然后写一个10w数组来和冒泡排序, 选择排序等比较, 结果发现程序像是卡死了直接花了几分钟还没出结果.

60320

数据排序绝佳选择!Python算法解析:掌握选择排序娴熟技巧!

数据排序绝佳选择!Python算法解析:掌握选择排序娴熟技巧!...选择排序 选择排序是一种简单直观排序算法,它通过每次选择排序部分最小元素,并将其放置在已排序部分末尾,从而逐步构建有序序列。 算法步骤: 在未排序部分中找到最小元素。...我们使用两个循环来遍历未排序部分和查找最小元素位置,然后通过交换元素方式将最小元素放置在已排序部分末尾。 现在让我们通过可视化展示选择排序算法执行过程,以加深对算法理解。...第3次排序: [11, 12, 22, 25, 64] 第4次排序: [11, 12, 22, 25, 64] 排序数组: [11, 12, 22, 25, 64] 通过这个可视化示例,你可以看到选择排序算法是如何每次选择最小元素...下集预告 这就是第六天教学内容,关于选择排序算法原理、示例代码以及可视化展示。如果你任何问题,请随时留言。

11820

直接选择排序:最通俗易懂排序算法

前言 直接选择选择排序也是八大排序之一排序算法,虽然实际应用上其实并不会选择它来进行排序,但它思想和价值还是十分值得去学习!...一、直接选择选择排序思想 选择排序思想就是每一次从待排序数据元素中选出最小(或最大)一个元素,存放在序列起始位置,直到全部待排序数据元素排完 。...每次遍历找到最大和最小俩个数en来存放在开头和末尾然后再一次重新遍历直到数组全部遍历完毕 begin == end 二、选择排序构建 在元素集合array[i]–array[n-1]中选择关键码最大...[n-1])集合中,重复上述步骤,直到集合剩余1个元素 2.1 选择排序优化 上图每次都是找到其中一个数来进行排序,其实我们实际代码是可以优化一下每次从 前面开始找到 最大 和最小 然后最小放在前面...直接选择排序特性总结: 直接选择排序思考非常好理解,但是效率不是很好。

13710

基础和常用排序算法:冒泡排序选择排序,插入排序,快速排序

冒泡排序 冒泡排序是一种基础排序算法,通过重复地交换相邻元素来工作,如果它们顺序错误就互换位置,直到没有元素需要交换。 工作原理 比较相邻元素,如果第一个比第二个大(升序),就交换它们。...选择排序 选择排序是一种简单排序算法,其基本思想是首先在未排序数列中找到最小(或最大)元素,存放到排序序列起始位置。...选择排序特点 不是稳定排序算法。 原地排序。 插入排序 什么是插入排序? 插入排序是一种简单直观排序算法。...快速排序 什么是快速排序? 快速排序是一种高效排序算法,通过分治方式,选择一个基准元素,然后将数组分为两个子数组,一个包含小于基准元素,另一个包含大于基准元素。...总结 以上就是四种常用排序算法简单介绍,包括冒泡排序选择排序、插入排序和快速排序。这些算法在计算机科学和编程中都有广泛应用,并且是很多更复杂算法基础。

18830
领券