首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏技术博文

    算法-排序算法-选择排序

    /** * 排序算法-选择排序 * 选择排序(Selection Sort)算法也是比较简单的排序算法,其思路比较直观。选择排序算法在每一步中选取最小值来重新排列,从而达到排序的目的。 * 选择排序算法通过选择和交换来实现排序,其排序流程如下: * (1)首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换。 至此,便完成了对原始数组的从小到大的排序。 * * 选择排序算法在对n个数据进行排序时,无论原数据有无顺序,都需要进行n-1步的中间排序。 * 这种排序方法思路很简单直观,但是缺点是执行的步骤稍长,效率不高。 size; i++) { ints[i] = (int)(Math.random() * 100 ); } System.out.println("排序前的数组

    2.2K30发布于 2021-03-11
  • 来自专栏技术博文

    算法-排序算法-冒泡排序

    /** * 排序算法-冒泡排序 * 冒泡排序(Bubble Sort)算法是所有排序算法中最简单、最基本的一种。 * 冒泡排序算法的思路就是交换排序,通过相邻数据的交换来达到排序的目的。 * 冒泡排序的思路: * (1)对数组中的各数据,依次比较相邻的两个元素的大小。 * (2)如果前面的数据大于后面的数据,就交换这两个数据。经过第一轮的多次比较排序后,便可将最小的数据排好。 * 冒泡排序算法在对n个数据进行排序时,无论原数据有无顺序,都需要进行(i = n-1)次的外层循环。 * 每次内部的排序随着步骤的递增,需要排序的数据逐步减少,所以需要 (n - i)次的内层循环,注意:i从1开始 */ import java.util.*; public class BubbleSort :" + Arrays.toString(ints)); } System.out.println("最终排序后的数组:" + Arrays.toString(ints)

    1.4K20发布于 2021-03-08
  • 来自专栏技术博文

    算法-排序算法-快速排序

    /** * 排序算法-快速排序 * 快速排序(Quick Sort)算法和冒泡排序算法类似,都是基于交换排序思想的。快速排序算法对冒泡排序算法进行了改进,从而具有更高的执行效率。 * 快速排序算法通过多次比较和交换来实现排序,过程如下: * (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。 * (3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样将左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。 当左、右两部分各数据排序完成后,整个数组的排序也就完成了。 :" + Arrays.toString(ints)); quickSortFun(ints, 0, size - 1); System.out.println("排序后的数组

    1.4K10发布于 2021-03-17
  • 来自专栏技术博文

    算法-排序算法-希尔排序

    /** * 排序算法-希尔排序 * 冒泡排序算法、选择排序算法和插入排序算法,虽然思路比较直观,但是排序的效率比较低。 * 对于大量的数据需要排序时,往往需要寻求其他更为高效的排序算法。 Shell排序算法便是其中一种 * Shell排序算法严格来说基于插入排序的思想,其又称为希尔排序或者缩小增量排序,思路如下: * (1)将有n个元素的数组分成n/2个数字序列,第1个数据和第n/2 * (3)然后,再变为n/4个序列,再次排序。 * (4)不断重复上述过程,随着序列减少最后变为一个,也就完成了整个排序。 size; i++) { ints[i] = (int)(Math.random() * 100 ); } System.out.println("排序前的数组 :" + Arrays.toString(ints)); } System.out.println("排序后的数组:" + Arrays.toString(ints))

    1.1K20发布于 2021-03-12
  • 来自专栏技术博文

    算法-排序算法-插入排序

    /** * 排序算法-插入排序 * 插入排序(Insertion Sort)算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。 * 插入排序算法的思路比较简单,应用比较多。 * 插入排序算法通过比较和插入来实现排序,其排序流程如下: * (1)首先对数组的前两个数据进行从小到大的排序。 * (2)接着将第3个数据与排好序的两个数据比较,将第3个数据插入合适的位置。 最后,便完成了对原始数组从小到大的排序。 * * 插入排序算法在对n个数据进行排序时,无论原数据有无顺序,都需要进行n-1步的中间排序。 * 这种排序方法思路简单直观,在数据已有一定顺序的情况下,排序效率较好。但如果数据无规则,则需要移动大量的数据,其排序效率也不高。 size; i++) { ints[i] = (int)(Math.random() * 100 ); } System.out.println("排序前的数组

    91620发布于 2021-03-11
  • 来自专栏全栈程序员必看

    Js排序算法_js 排序算法

    一、概念 快速排序算法由 C. A. R. Hoare 在 1960 年提出。 它的时间复杂度也是 O(nlogn),但它在时间复杂度为 O(nlogn) 级的几种排序算法中,大多数情况下效率更高,所以快速排序的应用非常广泛。 快速排序的一次划分算法从两头交替搜索,直到low和high重合,因此其时间 复杂度是O(n) ; 而整个快速排序算法的时间复杂度与划分的趟数有关。 这样,长度为n的数据表的快速排序需要经过n趟划分,使得整个排序算法的时间复杂度为O(n2)。 如果需要优化,那么我们希望每次区分的时候都取到中间数。 JavaScript实现五种排序算法 关于快速排序的不稳定性说明 JavaScript实现十大排序算法(附有更好理解的GIF动态图) 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人

    29.3K20编辑于 2022-09-28
  • 来自专栏用代码征服天下

    算法——排序算法

    1、冒泡排序  基本思想:现在有一个数组arr= {12,35,99,18,76},需要将其从小到大排序 第一次冒泡:首先我们将数组第一个数(arr[0])和第二个数(arr[1])进行比较,如果第二个数比第一个数大 : 原理:每一次循环从未排序的数中找出最小的数,然后与已经排好序的数的下一个数进行交换,直到全部记录排序完毕 基本思想:给定数组:int[] arr={里面n个数据},第一次排序从arr[0]~arr[ --------- 第二趟排序: 原始数据:8 3 7 5 6(2已经排好序了,不需要再排序了) 最小数据3,8和3交换 排序结果:2 3 8 7 5 6 ----------------------- -------------------------------- 第三趟排序: 原始数据:8 7 5 6(2、3已经排好序了,不需要再排序了) 最小数据5,5和8交换 排序结果:2 3 5 7 8 6 6已经排好序了,不需要再排序了) 最小数据7,7和8交换 排序结果:2 3 5 6 7 8 排序完成 代码示例: 1 package com.alibaba; 2 3 import org.junit.jupiter.api.Test

    1K10编辑于 2022-05-09
  • 来自专栏程序猿~

    排序算法 - 快速排序

    public class QuickSort { public static void quickSort(int[] arr, int l, int r){ if(l >= r){ return; } int p = partition(arr, l, r); quickSort(arr, l, p - 1); quickSort(arr, p + 1, r); } pub

    1.1K30发布于 2021-02-04
  • 来自专栏琯琯博客

    排序算法-冒泡排序

    排序算法-冒泡排序 <? php /** * 冒泡排序 * * @param array $value 待排序数组 * * @return array */ function bubble($value = []) $value[$i] = $tmp; } } } return $value; } /** * 优化冒泡排序 * * @param array $value 待排序数组 * @return array */ function bubble_better($value = []) { $flag if ($value[$i] > $value[$i+1]) { $flag = true; // 如果还有交换发生 则排序未完成 $last

    1.1K110发布于 2018-05-09
  • 来自专栏JavaEE

    排序算法 --- 堆排序

    排序介绍: 堆排序是利用“堆”这种数据结构设计的,也是一种选择排序,时间复杂度为O(nlogn),属于不稳定排序。 堆,其实就是具有某些特征的完全二叉树。 在用堆排序的时候,如果要升序,那就使用大顶堆,如果要降序,那就使用小顶堆。·· 2. 排序思想: 将待排序列构造成一个最大堆。 } } // 循环结束,就是调整结束,要把刚才保存的父节点的值赋给当前节点,这才完成了父节点与子节点值的交换 arr[index] = temp; } 然后就可以写排序方法了

    1.2K20发布于 2020-11-12
  • 来自专栏seth-shi的专栏

    排序算法-桶排序

    排序很适用于有 0~100 个数, 然后打乱顺序, 重新分配. 不过如果给定的数据范围差距很大, 桶排序算法效率变低. floor((num - min) / n)即可得知放入哪个桶 如果桶中已存在元素,拉出一个链表,并且按照从小到大的顺序 重复 3,4 直至把所有元素装入桶中 遍历所有桶中的链表, 直接把每一个元素载入数组,排序即可完成 bucketChunk := (max - min + 1) / buckets bucketLinks := make([]*LinkList, buckets) // 把所有数字放入桶中并且排序 } if b.head.data > num { b.head = &Node{num, b.head} return } // 排序插入

    47010编辑于 2023-12-18
  • 来自专栏琯琯博客

    排序算法-快速排序

    排序算法-快速排序 <?php /** * 快速排序. * * @param array $value 待排序数组 * @param array $left 左边界 * @param array $right 右边界 * * @return quick($value, $left, $i - 1); // 开始排序右边部分 quick($value, $i + 1, $right); return $value ; } /** * 快速排序.while版本 * * @param array $value 待排序数组 * @param array $left 左边界 * @param array quick_while($value, $left, $i - 1); // 开始排序右边部分 quick_while($value, $i + 1, $right);

    1.4K80发布于 2018-05-09
  • 来自专栏武培轩的专栏

    排序算法-选择排序

    算法简介 选择排序就是找到数组中最小元素将其和数组第一个元素交换位置,然后在剩下的元素中找到最小元素并将其与数组第二个元素进行交换,以此类推,直至整个数组排序结束。 算法描述 找到数组中最小元素并将其和数组第一个元素交换位置 在剩下的元素中找到最小元素并将其与数组第二个元素交换,直至整个数组排序 ? 由于每次都是选取未排序序列R中的最小元素 a 与 R 中的第一个元素交换,很可能破坏了元素间的相对位置,因此选择排序是不稳定的。 排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 选择排序 \(O(n^2)\) \(O(n^2)\) \(O(n^2)\) \(O(1)\) 不稳定

    2.2K40发布于 2018-04-18
  • 来自专栏武培轩的专栏

    排序算法-冒泡排序

    算法简介 冒泡排序(Bubble Sort)是一种典型的交换排序算法,持续比较相邻元素,大的挪到后面,因此大的会逐步往后挪,故称之为冒泡。 算法描述 比较相邻的元素。 冒泡排序排序过程中,元素两两交换时,相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 冒泡排序 \(O(n^2)\) \(O(n)\) \(O(n^2)\) \(O(1)\) 稳定 冒泡排序优化(优化外层循环) 若在某一趟排序中未发现位置的交换 为此,在下面给出的算法中,引入一个标签flag,在每趟排序开始前,先将其置为false。若排序过程中发生了交换,则将其置为true。 各趟排序结束时检查flag,若未曾发生过交换则终止算法,不再进行下一趟排序

    1.4K70发布于 2018-04-18
  • 来自专栏iDoitnow

    排序算法---选择排序

    排序是我们学习算法过程中重要且基础的一环,例如对下面的排序问题,我们应该怎么做呢? 选择排序思想和实现思路 提到排序问题,很容易想到的思路就是找出来所有数据中最大(或最小)的元素,放在一个新列表的第一位,然后再在剩下的元素中找出最大(或最小)的元素,放在新列表的第二位,以此类推... 这就是选择排序(selection sort)的算法思想。 上图就是选择排序算法思想,但一个算法的实现往往不能通过一个简单的思想就搞定(这就是思想与现实的距离,哈哈~)。 选择算法的实现并不会新建一个空白列表(因为这样太奢侈了),而是直接在原列表上进行操作:首先先从列表中找出最大(或者最小)的元素,将其与列表中的第一个元素互换位置,然后再从剩余元素中挑选出最大(或者最小) 具体的实施步骤如下: 算法实现 接下来我们看一下其具体的算法实现: #include <iostream> #include <vector> using namespace std; struct

    1.1K10编辑于 2023-05-17
  • 来自专栏深究算法

    排序算法】②希尔排序

    学习并理解排序,不仅有助于工作学习,或许对一些其他方面的理解也会起动到推的效果。 一、希尔排序是什么? 希尔排序法又称缩小增量法,是在直接插入排序的基础上进行优化得来的排序算法算法思想 希尔排序法的基本思想是:先选定一个间距整数gap,把待排序文件中所有记录分成gap个组,所有距离为gap的记录分在同一组内,并对每一组内的记录进行直接插入排序。 然后,gap--,重复上述分组和排序的工作。当到达gap=1时,所有记录在统一组内排好序。 简单来说,希尔排序分为“预排序”和“正式排序”两步。 二、为什么希尔排序能做到排序? 预排序的过程其实就是让数组接近有序,为后面的gap=1时的插入排序做准备,也就是说希尔排序的最后一步必须是gap==1时的直接插入排序! 总结 本文是【排序算法】系类第二篇,主要介绍了什么希尔排序,以及如何实现希尔排序,最后分析了希尔排序的特性。

    42610编辑于 2025-08-22
  • 来自专栏我的计算机成长

    排序算法-快速排序

    1.快速排序(递归) 快速排序是 Hoare 于 1962 年提出的一种二叉树结构的交换排序方法,其基本思想为: 任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值 cur的作用就是和prev拉开距离,然后将大于a[keyi]的值放到右边的部分,最后交换a[keyi]和a[prev],就完成了部分排序。 ,因为插入排序最坏的情况就是要插入的数都比前面的数小,插入排序在小区间里面比较不错的一种排序算法,在快速排序里面使用插入排序可以提高很多的效率。 (非递归) 非递归的快速排序可以借助一个栈来实现,先入右边的值,再入左边的值,然后每次取值都是先取栈顶,也就是左边的值,然后再进行部分排序,直到返回的keyi-1=left,就代表着左边排序完成,右边返回的 keyi+1=right,代表右边的部分排序完成。

    87310编辑于 2024-01-23
  • 来自专栏学习

    排序算法】选择排序

    1.基本介绍 选择排序基本思想:它首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 2.数据演示 第0次排序:8 5 2 7 3 4 第1次排序:2 5 8 7 3 4 第2次排序:2 3 8 7 5 4 第3次排序:2 3 4 7 5 8 第4次排序:2 3 4 5 7 8 第5次排序:2 3 4 5 7 8 例如在第一次排序中:第一个数8,与后面最小的数交换位置,从而确定最小值,在第2次排序中,已经确定了第一个值 3.算法思路 小编认为要用循环嵌套,内循环执行比较,得出最小值,在外循环中,实现交换元素,以及确定内循环执行的次数。 (arr)); } } 小编这里当交换位置时minindex才不等于原来的值,所以才输出排序次数以及排序结果,index只是为了记录排序的次数 演示结果: 第1次排序后的队列为[2, 5,

    1K10编辑于 2024-09-24
  • 来自专栏知识分享

    排序算法】——选择排序

    排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。 简介 所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。 本篇文章讲述的是排序算法中的选择排序,其中包含了两种排序算法,分别是直接选择排序和堆排序,下面将会一一为大家详细介绍。 1.直接选择排序 下面我们首先来看一看直接选择排序算法的动图演示: 看了上图我们可以得知,直接选择排序算法是首先从第1个位置开始对全部元素进行选择,选出全部元素中最小的给该位置 2.稳定性 在排序算法中,我们不光要关注算法的时空复杂度,还在看看算法的稳定性,什么是稳定性呢? 因此,我们说选择排序不是稳定的排序算法,它在计算过程中会破坏稳定性。

    38710编辑于 2025-05-31
  • 来自专栏琯琯博客

    排序算法-选择排序

    排序算法-选择排序 <?php /** * 选择排序. * * @param array $value 待排序数组 * * @return array */ function select_sort(&$value = []) { $length

    2K80发布于 2018-05-09
领券