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

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

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

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

    Python-排序-选择排序-优化

    选择排序的思想:将一组数据分为两部分,前面是已排序部分,后面是未排序部分,初始状态可认为位置 0 为已排序部分 (数组下标从0开始),其余为未排序部分,每一次都从未排序部分选择一个最小元素放在已排序部分的末尾...个元素中选择一个最小数据与位置 2 的数据交换 …… 思路很简单,可是要真正动手写起来,会发现数组的下标如果处理不当,会有 BUG,而且调试起来也挺费时间,建议在写代码时加上注释,方便自己,更方便别人的理解...下面是优化版的代码 优化版 def selection_sort2(data_list): count = 0 length = len(data_list) for i in...在实际应用中,当数据量很大时,优化的结果还是很可观的。 性能分析 首先,选择排序的只需要一个变量做为交换,因此空间复杂度是O(1),是一种原地排序算法。...其次,选择排序在未排序区间选择一个最小值,与前面的元素交换,对于值相同的元素,因为交换会破坏他们的相对公交车,因此它是一种不稳定的排序算法。

    74410

    js 实现选择排序优化

    // 选择排序 // 原理:进行 n-1 趟 循环,每趟循环中遍历所有未排好序的数,第一趟循环,从第0个元素开始向后遍历,找到 最小的元素,与第1 一个元素进行交换,第二趟,从第 1 个元素开始向后遍历...找到最小值与第2个元素 进行交换,以此类推 // 从而得出规律,每次遍历元素开始位置为 i+1,并维护每轮循环的最小值的索引,一轮循环结束后,通过最小值的索引获取到最小值,与起始位置交换 // 稳定性:因为选择排序每次找到最小值...arr[minIndex] = temp; } console.log(`执行了${count}趟循环`); return arr; } console.log("普通选择排序...4, 0, 1, 6, 5])); // 执行了9趟循环 console.log(selectSort([1, 2, 3, 4, 5, 6, 7, 8, 9, 9])); // 执行了9趟循环 // 优化选择排序...break; } } console.log(`执行了${count}趟循环`); return arr; } console.log("普通选择排序

    4.5K10

    排序算法之选择排序-java

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

    83720

    java冒泡排序代码_Java冒泡排序

    一、冒泡排序: 利用冒泡排序对数组进行排序 二、基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。...四、java代码实现: package 冒泡排序; import java.util.Arrays; /** * 冒泡排序 * @author chen * */ public class BubbleSort...六、算法优化: 冒泡排序法存在的不足及改进方法: 第一,在排序过程中,执行完最后的排序后,虽然数据已全部排序完备,但程序无法判断是否完成排序,为了解决这一不足,可设置一个标志位flag,将其初始值设置为非...在新一轮排序开始时,检查此标志,若此标志为0,表示上一次没有做过交换数据,则结束排序;否则进行排序; package 冒泡排序; import java.util.Arrays; /** * 冒泡排序改进版...由于局部冒泡排序和冒泡排序的数据移动次数总是相同的,而局部冒泡排序所需关键字的比较次数常少于冒泡排序,这意味着局部冒泡排序很可能在平均比较次数上对冒泡排序有所改进,当比较次数较少的优点不足以抵消其程序复杂度所带来的额外开销

    1.9K61

    冒泡排序-选择排序-插入排序-快速排序java版实现)

    排序就是将输入的数字按照从小到大的顺序进行排列。由于排序是一个比较基础的问题,所以排序算法的种类也比较多。最近学习了几种常见的排序算法,下面介绍如何使用java代码实现对数组进行从下到大排序。...j + 1]; arr[j + 1] = temp; } } } } } 二、选择排序...1、概念 快速排序要比上面几个排序难度大些了,排序的效率也更高,实现方式就是在数组中找一个基准数,将大于基准数的值放到基准数右边,小于的放到左边,然后将小于基准数的左边序列再次选择一个基准数...,大于基准数的右边序列也再次选择一个基准数,循环执行上述操作,只到子序列都剩一个数字时,停止循环,此时排序成功。...java实现

    26320

    java冒泡排序经典代码_java冒泡排序

    经典算法——冒泡排序(Bubble Sort) 一、示例代码(伸手党看这里) 1.示例一 importjava.util.Arrays;public classBubbleSort {public static...int[] a = {10, 2, 5, 7, 23, 59, 3}; bubbleSort(a); System.out.println(Arrays.toString(a)); } } 当然,上面的代码可以小小的优化一下...在使用冒泡排序的时候有可能会遇到这样一种情况:某一趟排序从头到尾,数组中的数字都没有发生位置交换。 那么上面这种情况说明了什么呢?说明了在经过上一趟的排序后,整个数组就已经被排好序了。...这么说的话原来计划的N-1趟排序我们是不是可以不用跑满了?是的!...所以可以优化的地方是:在每一趟排序排完后,看一下这一趟有没有发生数字位置 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152139.html原文链接:https:

    76720

    java学习之数组元素排序,冒泡排序选择排序

    java学习之数组元素排序 选择排序 *返回值类型 void *参数列表 int[] arr * 分析:选择排序 * 第一次arr[0]与arr[1-4]比较,总共比较4次 * 第二次arr[1]与arr...[2-4]比较,总共比较3次 * 第三次arr[2]与arr[3-4]比较,总共比较2次 * 第四次arr[3]与arr[4]比较,总共比较1次 冒泡排序 返回值类型void * 参数列表 int[]...arr * 分析:冒泡排序 * 第一次比较arr[0]和arr[1],arr[1]和arr[2],arr[2]和arr[3],arr[3]和arr[4]比较了4次 * 第二次比较arr[0]和arr[1...selectSort(arr);//选择排序 print(arr); } /* *返回值类型 void *参数列表 int[] arr * * 分析:选择排序 *...* int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; 代码更简洁 */ private static

    64740

    排序——选择排序

    选择排序 --- 简单选择排序 基本思想 每一趟在后面 n-i +1个中选出关键码最小的对象, 作为有序序列的第 i 个记录 算法实现 void SelectSort(SqList &L){ // 对记录序列...L.length]作简单选择排序 for(i = 1; i <= L.length; i++){ // 选择第 i 小的记录,并交换到位 k = i; for(j = i + 1; j <...k]); // 交换 } } 算法分析 时间复杂度:O(n^2) - 移动次数: - 最好情况:0 - 最坏情况:3(n-1) 空间复杂度: O(1) 稳定性: 稳定 --- 树形选择排序...算法分析 含有n个叶子节点的完全二叉树的深度为log2 n+1,则选择排序的每一趟都需作log2n次比较,排序的时间复杂度O(nlog2n)。...改进:简单选择排序没有利用上次选择的结果,是造成速度满的重要原因。如果,能够加以改进,将会提高排序的速度。

    901125
    领券