首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏cmazxiaoma的架构师之路

    Java数据结构与算法(4) -冒泡排序

    不过还是要给自己制定一个计划,每天学习一小节《Java数据结构与算法》和看一小节刘宇波老师的《数据结构与算法》视频,还有就是学习Spring Boot项目课程。 ---- 从简单的冒泡排序开始 冒泡排序算法运行起来十分慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在开始研究排序技术时是一个非常好的算法。 ---- 什么是冒泡排序? 对几个无序的数字进行排序,最常用的方法是所谓的冒泡排序算法思想是每次比较2个相邻的数字,将小的放在前面,将较大的放在后面,这样就可以将这些数中最大的找出来放在到最后。 然后再比较剩下的数字,再在这些数字中找出最大的,直到所有的数字按照从小到大的顺序进行排序。 提炼思想 在算法执行的时候,最大的数据项总是冒泡到数据的顶端。 public class BubbleSortDemo { public static int[] a = { 2, 4, 6, 8, 3, 6, 9, 12 }; public static

    75850发布于 2018-06-05
  • 来自专栏C/C++与音视频

    排序算法4--快速排序

    快速排序算法 的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一 部分的数据小,然后将所分得的两部分数据进行同样的划分,重复执行以上的划分操作 ,直 到所有要进行排序的数据变为有序为止。

    32320编辑于 2022-06-14
  • 来自专栏明志德到的IT笔记

    C#排序算法4:希尔排序

    希尔排序是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),它是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多 ,当增量减至 1 时,整个文件恰被分成一组,算法便终止 原理:按增量分组,组内排好序,在逐渐缩小增量。 } return arr; } 运行结果 Console.WriteLine($"数据算法 = new Random(); var arr1 = GetArrayData(20, 1,15 ); Console.WriteLine($"生成未排序数据 arr1:{ShowArray(arr1)}"); var arr6= SellSort(arr1); Console.WriteLine($"希尔排序

    26120编辑于 2023-10-21
  • 来自专栏java初学

    java排序算法

    main(String[] args) { int[] arr = {1,3,5,7,3,6,7,4,8,34,6}; Test test = new Test(); test.bubbleSort ,-5,4,3}; Test test = new Test(); test.selectionSort(a); for(int i = 0; i < a.length; i++) { :冒泡排序是将相邻的数据进行对比,而选择排序是将下标为i和j的数据进行对比(每次选出当前数据集中最小的)。 3.插入排序   ①从第一个元素开始,该元素可以认为已经排序;   ②取出下一个元素,在已经排序的元素序列中从后往前进行扫描;   ③如果该元素(已排序)大于新元素,则将该元素移动到下一个位置;   ④ 4.二分排序 二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前

    1.5K170发布于 2018-05-14
  • 来自专栏卯金刀GG

    算法基础】java 排序算法

    Java中的经典算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。 中的经典算法之选择排序(SelectionSort) a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。 基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。 ----------------------------------- 第三趟排序: 除1、2以外的数据{8 4 9 5}进行比较,4最小,8和4交换 排序结果:1 2 4 8 9 5 所以,综上,简单排序的时间复杂度为 O(N2)。 java实现的快速排序算法 快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。

    1.3K20发布于 2019-07-26
  • 来自专栏全栈程序员必看

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

    常见几种java排序算法 1.插入排序 2.分治排序法,快速排序法 3.冒泡排序 low版 4.冒泡排序 bigger版 5.选择排序 6. 归并排序 8. 比较 1.插入排序 这个打麻将或者打扑克的很好理解, 比如有左手有一副牌1,2,4,7 ,来一张3的牌, 是不是就是手拿着这张牌从右往左插到2,4之间 一次插入排序的操作过程: 将待插元素,依次与已排序好的子数列元素从后到前进行比较 层层细分 接下来,我们通过示图来展示上述分区算法思路的过程: public class QuickSort { public static void sort(int[] arr = arr[j+1]; arr[j+1] = temp; } } } } } 4. 选择排序也是一种简单直观的排序算法,实现原理比较直观易懂: 首先在未排序数列中找到最小元素,然后将其与数列的首部元素进行交换,然后,在剩余未排序元素中继续找出最小元素,将其与已排序数列的末尾位置元素交换

    91020编辑于 2022-07-28
  • 来自专栏AllTests软件测试

    Java常见排序算法

    Java常见排序算法 目录 1、归并排序 2、堆排序 3、基数排序 4、冒泡排序 5、希尔排序 6、快速排序 7、插入排序 8、选择排序 1、归并排序 1、基本思想 归并排序(MERGE-SORT 3、代码实现 4、冒泡排序 1、排序原理 大家一定都喝过汽水吧,汽水中常常有许多小小的气泡,往上飘,这是因为组成小气泡的二氧化碳比水要轻,所以小气泡才会一点一点的向上浮。 而冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以向小气泡一样,根据自身大小,一点一点向着数组的一侧移动。 2、代码实现 5、希尔排序 1、基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。

    70420编辑于 2022-07-26
  • 来自专栏全栈程序员必看

    冒泡排序算法Java

    大家好,又见面了,我是全栈君 冒泡排序即每次遍历。相邻数字间进行比較,前者大于后者进行交换,不断将最大值后移,直至沉至最后位置;算法关键要点在于确定每次循环的边界。 后面两种算法则是对冒泡排序一定程度上的改良,但相对于其它排序算法,冒泡排序性能依旧较差。 //冒泡排序 public class Bubble_Sort { //最原始的解法 public void bubble_sort1(int[] data) { int n = data.length j++) { if(data[j] > data[j + 1]) { swap(data, j , j + 1); } } } } //改进算法 data[j + 1]) { swap(data, j , j + 1); flag = true; } } index--; } } //改进算法

    56530编辑于 2022-07-06
  • 来自专栏大数据技术栈

    Java算法--堆排序

    package arithmetic; import breeze.stats.distributions.Rand; import java.util.Collections; import java.util.Random public class HeapSort { public static void main(String[] args) { int[] arr = {1, 2, 3, 4,

    54710发布于 2019-10-30
  • 来自专栏zcqshine's blog

    JAVA 快速排序算法

    之前在 CSDN 上看到一个 Java 快速排序算法的例子, 觉得这个代码写的挺好的, 就保存了. --] = a[i]; } a[i] = index;// 将基准数值替换回 a[i] sort(a, low, i - 1); // 对低子表进行递归排序 sort(a, i + 1, hight); // 对高子表进行递归排序 } public static void quickSort(int a[]) {

    1.5K60发布于 2018-05-11
  • 来自专栏代码伴一生

    java选择排序算法

    /** 选择排序:执行完一次内for循环后最小的一个数放在了数组的最前面。 * 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 / public class SelectSort { /** 排序算法的实现,对数组中指定的元素进行排序 * @param array 待排序的数组 @param from 从哪里开始排序 @param ** 测试 * @param args */ public static void main(String[] args) { Integer[] intgArr = { 5, 9, 1, 0, 4,

    98700发布于 2021-09-19
  • 来自专栏yang0range

    Java常见排序算法详解——快速排序

    概念: 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分小,则可分别对这两部分记录继续进行排序,直到整个序列有序。 这个操作称为分区 (partition) 操作,分区操作结束后,基准元素所处的位置就是最终排序后它的位置。 对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。 图解: 例如我们有个一个数组[29 4 10 11 7] 1.首先我们先选定一个基准元素,这里我们选择10作为基准元素,然后把基准元素放在最后一个,如果选择最后一个元素作为基准元素,那么可以省略 快速排序 ↓ 29 4 11 7 10 2.从左到右(除了最后的元素),循环移动小于基准元素到数据开头,留下大于等于基准元素的接在后面。 循环i = 1的时候,找到一个小于基准元素的元素4 这个时候storeIndex = 1 快速排序4 29 11 7 10 之后循环到i

    78830发布于 2019-04-22
  • 来自专栏码字搬砖

    排序算法之希尔排序-Java

    希尔排序 1.1 希尔排序的基本介绍 1.2 希尔排序思想 1.3 希尔排序的时间复杂度和空间复杂度等 2. 代码演示 1. 希尔排序 1.1 希尔排序的基本介绍 希尔排序是加强版的插入排序,相对与普通的插入排序做了优化,比普通的插入排序多了一个步长的概念 1.2 希尔排序思想 就是把数据下标按照一定的步长进行分组,然后每组分别用普通插入排序进行排序 ,知道步长减至为 1 时,算法终止。 1.3 希尔排序的时间复杂度和空间复杂度等 算法名称 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 希尔排序 O(nlogn) O(nlogn) O(nlogn) O(1) 不稳定 2. 代码演示 /** * @author shengjk1 * @date 2020/4/9 */ public class ShellSort { public static void main(

    86710发布于 2020-04-13
  • 来自专栏码字搬砖

    排序算法之选择排序-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.

    1K20发布于 2020-04-12
  • 来自专栏yang0range

    Java常见排序算法详解——冒泡排序

    转载请注明出处:[https://www.jianshu.com/p/df900e6ddbac 我们在面试的时候时常会问到我们算法题,而算法题当中排序算法题是问到最多的。 应广大同学的建议,我特意整理了一下Java常见的排序算法,我尽量从概念,原理,代码这几方面详细阐述旨在让大家知道、理解、应用。 29 1 11 2 10 3 5 4 7 5 4 我们可以看到,经过第一趟的排序之后。 代码实现: Java实现 /** * @author yangzc * @data 2019/4/8 22:21 * @desc 冒泡排序 */ public class BubbleSort : 选择排序 代码: Java和Kotlin代码我均放在了GitHub上,欢迎Star!

    86200发布于 2019-04-18
  • 来自专栏算法与编程之美

    JAVA实现常见排序算法 快速排序

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。 基本思想:用选取的初始值(一般是第一个)将待排序序列分为小于初始值和大于初始值的两部分,然后重复此操作,最终到排序完成。 该算法是一个不稳定的算法(如果待排序序列中存在相同的元素,经过排序后他们的相对位置不发生改变那么这个算法就是稳定的排序算法) 空间复杂度最坏为O(n),平均 ? Java实现: public static int[] quickSort(int[] n, int low, int high) { int lowMark = low, highMark } //将记录值写到最后低位指针的位置 n[lowMark] = record; //两边分别进行排序操作

    96320发布于 2019-07-17
  • 来自专栏yang0range

    Java常见排序算法详解——希尔排序

    概念: 希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一大步。 然后算法再取越来越小的步长进行排序算法的最后一步就是普通的插入排序,但是到了这步,需排序的数据几乎是已排好的了(此时插入排序较快)。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率 但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位 原理 array[j + number] = temp; } number = number / 2; } } 算法系列 : 冒泡排序 选择排序 直接插入排序 二分插入排序 希尔排序排序 完整代码: Java和Kotlin代码我均放在了GitHub上,欢迎Star!

    63600发布于 2019-04-18
  • 来自专栏yang0range

    Java常见排序算法详解——堆排序

    转载请注明出处:https://www.jianshu.com/p/73ef54fb99f4 概念 二叉树 要了解堆首先得了解一下二叉树,在计算机科学中,二叉树是每个节点最多有两个子树的树结构。 创建最大堆(Build_Max_Heap):将堆所有数据重新排序排序(HeapSort):移除位在第一个数据的根节点,并做最大堆调整。 图解:列如我们有原始数字[2 10 9 5 6 1] 下面我们用堆排序排序 原始为: ? 第一次: ? 第二次 ? 我们得到了 ? * 直至未排序的堆长度为 0。 } } 算法系列: 冒泡排序 选择排序 直接插入排序 二分插入排序 希尔排序排序 完整代码: Java和Kotlin代码我均放在了GitHub上,欢迎Star!

    1.1K00发布于 2019-04-18
  • 来自专栏yang0range

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

    转载请注明出处:https://www.jianshu.com/p/43981d777731 选择排序Simple Selection Sort 概念: 是一种简单直观的排序算法。 图解实例: 假如我们有一个数组 [11 10 5 7 4 29] 我们从这个数组当中,找到最小的数字4和第一个数字11交换位置。 ↓ 4 10 5 7 4 29 ↑ ↑ └────┘ 交换之后数组如下: 4 5 10 7 Tag) { Log.d(Tag, Arrays.toString(array)); return s + Arrays.toString(array); } } 算法系列 : 冒泡排序 代码: Java和Kotlin代码我均放在了GitHub上,欢迎Star!

    81700发布于 2019-04-18
  • 来自专栏bit哲学院

    java编写冒泡排序源代码,用java实现冒泡排序算法java冒泡算法

    参考链接: Java程序以实现冒泡排序算法java实现冒泡排序算法java冒泡算法  冒泡排序算法分析与改进  交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换 各趟排序结束时检查exchange,若未曾发生过交换则终止算法,不再进行下一趟排序。   exchange) //本趟排序未发生交换,提前终止算法  return;  } //endfor(外循环)  } //BubbleSort  4算法分析  (1)算法的最好时间复杂度  若文件的初始状态是正序的 (4)算法稳定性  冒泡排序是就地排序,且它是稳定的。   JAVA代码:  复制代码 代码如下:  package Utils.Sort;  /**  *@author Linyco  *利用冒泡排序法对数组排序,数组中元素必须实现了Comparable接口。

    4.2K30发布于 2021-04-28
领券