首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏花狗在Qt

    java学习之路:11.数组排序算法

    1.冒泡排序 package number; public class Xuexi { public static void main(String[] args) { int arr[]=new int[]{54,67,11,27,13,48,45}; Xuexi sorter =new Xuexi(); sorter.sort(arr); } public void sort(int[] array)//进行排序 { for(int i=1;i<array.length;i++) { //比较相邻两个元素,较大的数往后冒泡 for(int j=0;j<array.length-i 2.直接排序法 直线选择排序是将指定的排序位置与其他数组元素分别对比,如果瞒住条件就交换元素值,注意这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换。 3.反转排序 反转排序就是把数组的最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,依次类推,直到把所有数组元素反转替换。

    49431发布于 2020-10-28
  • 来自专栏java初学

    java排序算法

    , int x, int y) { int temp = source[x]; source[x] = source[y]; source[y] = temp; } }   注意将选择排序和冒泡排序进行区分 :冒泡排序是将相邻的数据进行对比,而选择排序是将下标为i和j的数据进行对比(每次选出当前数据集中最小的)。 3.插入排序   ①从第一个元素开始,该元素可以认为已经排序;   ②取出下一个元素,在已经排序的元素序列中从后往前进行扫描;   ③如果该元素(已排序)大于新元素,则将该元素移动到下一个位置;   ④ 重复步骤③,直到找到已排序的元素小于或者等于新元素的位置;   ⑤将该元素插入到新位置中;   ⑥重复步骤②。 4.二分排序 二分法插入排序是在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前

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

    算法基础】java 排序算法

    Java中的经典算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。 二、算法描述 假定n是数组的长度, 首先假设第一个元素被放置在正确的位置上,这样仅需从1-n-1范围内对剩余元素进行排序。 中的经典算法之选择排序(SelectionSort) a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。 基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。 所以,综上,简单排序的时间复杂度为 O(N2)。 java实现的快速排序算法 快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。

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

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

    常见几种java排序算法 1.插入排序 2.分治排序法,快速排序法 3.冒泡排序 low版 4.冒泡排序 bigger版 5.选择排序 6. 归并排序 8. 层层细分 接下来,我们通过示图来展示上述分区算法思路的过程: public class QuickSort { public static void sort(int[] arr 选择排序也是一种简单直观的排序算法,实现原理比较直观易懂: 首先在未排序数列中找到最小元素,然后将其与数列的首部元素进行交换,然后,在剩余未排序元素中继续找出最小元素,将其与已排序数列的末尾位置元素交换 ,结果如下: 得到综合结果是: 速度: 快速排序>>归并排序>>>>>插入排序>>选择排序>>冒泡排序 并且可以看到,选择排序,冒泡排序在数据量越来越大的情况下,耗时已经呈指数型上涨,而不是倍数上涨 maoPaoSort耗时: 60811 ms maoPaoSortPlus耗时: 60378 ms insertSort耗时: 3279 ms selectSort耗时: 15762 ms ---- 2021年11

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

    Java常见排序算法

    Java常见排序算法 目录 1、归并排序 2、堆排序 3、基数排序 4、冒泡排序 5、希尔排序 6、快速排序 7、插入排序 8、选择排序 1、归并排序 1、基本思想 归并排序(MERGE-SORT 2、代码实现 2、堆排序 1、基本思想 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。 而冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以向小气泡一样,根据自身大小,一点一点向着数组的一侧移动。 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

    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 static void main(String[] args) { Integer[] intgArr = { 5, 9, 1, 0, 4, 2, -6, 3, 8, 0, 76, -7, 7, 11

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

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

    概念: 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分小,则可分别对这两部分记录继续进行排序,直到整个序列有序。 图解: 例如我们有个一个数组[29 4 10 11 7] 1.首先我们先选定一个基准元素,这里我们选择10作为基准元素,然后把基准元素放在最后一个,如果选择最后一个元素作为基准元素,那么可以省略 快速排序 ↓ 29 4 11 7 10 2.从左到右(除了最后的元素),循环移动小于基准元素到数据开头,留下大于等于基准元素的接在后面。 循环i = 1的时候,找到一个小于基准元素的元素4 这个时候storeIndex = 1 快速排序 ↓ 4 29 11 7 10 之后循环到i +1得到了我们想要的数组 4 7 10 11 29 代码: public static void qSort(int[] arr, int head, int tail) {

    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. %d arr:%s", j, insertIndex, Arrays.toString(arr)); System.out.println(); } } } } 代码基本与普通插入排序一致

    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常见的排序算法,我尽量从概念,原理,代码这几方面详细阐述旨在让大家知道、理解、应用。 可能看到这,有的同学还不是很明白,那么我们假如,现在有这么几个数字 11 10 5 7 4 29 这么几个数字运用冒泡排序从大到小排序。 代码实现: 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常见排序算法详解——堆排序

    创建最大堆(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交换位置。 最小 min ↓ 11 10 5 7 4 29 ↑ ↑ 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
  • 来自专栏深度学习计算机视觉

    java实现多种排序算法

    冒泡排序 /** * Created by junyi.pc on 2017/1/25. */ import java.util.Calendar; import java.util.Scanner \java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\java\jdk1.8.0 \java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\java\jdk1.8.0 \java\jdk1.8.0_25\jre\lib\ext\sunpkcs11.jar;C:\java\jdk1.8.0_25\jre\lib\ext\zipfs.jar;C:\java\jdk1.8.0   Process finished with exit code 0 快速排序 public class QuikSort { public void quikSort(int[]

    81650发布于 2018-04-24
  • 来自专栏CSDN

    Java基础(快速排序算法)

    快速排序算法 基本思想 具体方法 代码实现 基本思想 任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程 具体方法 选择一个基准元素,通常选择第一个元素或者最后一个元素, 通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的元素值比基准值大。 此时基准元素在其排好序后的正确位置 然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序 代码实现 public static int pivot(int [] nums,int start

    88910编辑于 2022-05-05
领券