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

PHP数据结构(十八) ——直接插入排序

PHP数据结构(十八)——直接插入排序 (原创内容,转载请注明来源,谢谢) 一、概述 插入排序分为直接插入排序、其他插入排序、希尔排序。其他插入排序又分为折半插入排序、2-路插入排序。...二、直接插入排序 直接插入排序是一种最简单的排序方法,时间复杂度O(n2),实现方式是将一个记录插入到已经排序好的有序表,得到一个新的、记录数增加1的有序表。...2、关键代码实现如下 //直接插入排序 publicfunction directInsertSort(array $arr = array()){...PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践2) PHP数据结构(八) ——赫夫曼树实现字符串编解码(实践1) PHP数据结构(八) ——赫夫曼树实现字符串编解码(理论) PHP数据结构(...PHP数据结构(三)——运用栈实现括号匹配 PHP数据结构(二)——链式结构线性表 PHP数据结构(一)——顺序结构线性表

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

    直接插入排序

    恩恩,不错,这就是直接插入排序的主要思路 突然之间又学了一个知识点,每次知识都来得猝不及防 ? ,一尘心里想到 ? 慧能 ?...所谓直接插入排序,就是把未排序的元素一个一个地插入到有序的集合中,插入时就像你那样,把有序集合从后向前扫一遍,找到合适的位置插入 慧能拿来了笔和纸准备详细地说说 ? 慧能 ?...9同理 代码 哦,我懂了,原来直接插入排序这么简单 ? ? 一尘 ? 慧能 ? 那你用代码实现一下呗 早知道就不说这句话了 ?...你这个插入到正确位置的函数是怎么实现的? 是啊,这个怎么实现呢?...小一尘又把插入方法(insertToRightPosition)实现了 ? i 指向待插元素,j 会遍历有序数组中所有元素,直到找到合适的位置将待插元素(inserted)插入 ? ? 一尘 ? ?

    48120

    直接插入排序

    慧能 恩恩,不错,这就是直接插入排序的主要思路 突然之间又学了一个知识点,每次知识都来得猝不及防,一尘心里想到 ?...慧能 所谓直接插入排序,就是把未排序的元素一个一个地插入到有序的集合中,插入时就像你那样,把有序集合从后向前扫一遍,找到合适的位置插入 慧能拿来了笔和纸准备详细地说说 ?...慧能 9同理 代码 哦,我懂了,原来直接插入排序这么简单 ? 一尘 ?...慧能 那你用代码实现一下呗 早知道就不说这句话了,一尘心里想,但师命难违,还是硬着头皮想了想 首先我用一个数组存储要排序的数据(无序) ?...慧能 你这个插入到正确位置的函数是怎么实现的? 是啊,这个怎么实现呢?

    75950

    排序三 直接插入排序

    要点 直接插入排序是一种最简单的插入排序。 插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。...在讲解直接插入排序之前,先让我们脑补一下我们打牌的过程。 先拿一张5在手里, 再摸到一张4,比5小,插到5前面, 摸到一张6,嗯,比5大,插到5后面, 摸到一张8,比6大,插到6后面, 。。。...所以,数据越接近正序,直接插入排序的算法性能越好。 空间复杂度 由直接插入排序算法可知,我们在排序过程中,需要一个临时变量存储要插入的值,所以空间复杂度为 1 。...算法稳定性 直接插入排序的过程中,不需要改变相等数值元素的位置,所以它是稳定的算法。...完整参考代码 JAVA版本 代码实现  1 package notes.javase.algorithm.sort;  2  3 import java.util.Random;  4  5

    46260

    排序之直接插入排序

    特别是斗地主;从你摸完第一张牌开始,之后的每摸的一张牌都需要与手中已有的牌进行比较,来确定这张牌放的位置,不管你们是否有这个习惯,我是有这个习惯的,就是从左到右,牌是从小到大的;这个摸牌的过程其实就是直接插入排序的一个过程...基本思想   直接插入排序就是将一个记录插入到已经排好序的有序表中,从而得到一个新的有序表;最初的状态则是将整个序列看成是由第1个元素组成的有序序列 加 第2个元素至第n个元素的无序序列,这个两个序列组成的...代码实现   代码实现语言采用java,没学过java的也没关系,只要有编程语言基础,就不影响阅读 /** * 直接插入排序 * @param arr 目标数组 */

    88210

    直接插入排序

    ---- 一趟直接插入排序方法 具体做法: 将待插入记录 a[i]的关键字从右向左依次与有序区中记录 aj的关键字进行比较: 1.若 a[j]的关键字大于 a[i]的关键字,则将 a[j]后移一个位置;...关键字比a[i]的关键字大的记录均已后移,所以 j+1 的位置已经腾空,只要将 a[i] 直接插入此位置即可完成一趟直接插入排序。...---- 直接插入排序算法时间复杂度:O(n^2);空间复杂度:O(1)。直接插入排序是稳定的排序方法。...---- 直接插入排序算法代码 //直接插入排序 void insertSort(int *arr, int n) { //第一个数肯定是有序的,从第二个数开始遍历 for (int...@Test public void sort1() {// 直接插入排序 Integer arr[] = { 8, 5, 10, 12, 7, 6, 15, 9, 11, 3 }

    41420

    7.2.1 直接插入排序

    直接插入排序是一种最简单也最直观的插入排序算法。...假设在排序过程中,待排序表L[1...n]在某次排序过程的某个时刻状态如下: 有序序列L[1...i-1] L(i) 无序列表L(i+1...n) 为了实现将元素L(i)插入到已有序的子序列L[1....为了实现对L[1...n]的排序,可以将L(2)~L(n)一次插入到前面已经排好序的子序列中,初始假定L[1]是一个已经排好序的子序列。上述操作执行n-1次就能得到一个有序的表。...插入排序在实现上通常采用就地排序(空间复杂度为O(1)),因而在从后向前的比较过程中,需要反复把已排序元素逐步向后挪位,为新元素提供插入空间。...稳定性:由于每次插入元素时总是从后往前先比较再移动,所以不会出现相同元素相对位置发生变化的情况,即直接插入排序是一个稳定的排序方法。 适用性:直接插入排序算法适用于顺序存储和链式存储的线性表。

    47720

    排序1:直接插入排序

    ✨✨很久没有写博客了,最近打算完整的写一个专题关于数据结构中排序算法的内容✨✨           这一期我们来剖析一下直接插入排序的底层逻辑和代码实现。...单趟的实现  一口气吃不成一个大胖子,想要实现整个排序,我们应该来先实现单轮排序。 逻辑大致可分为以下:         1、从后往前遍历。        ...,end递减,实现了从后往前。...; InsertSort(a, sizeof(a) / sizeof(int)); Print(a, sizeof(a) / sizeof(int)); } 最终排成了由小到大的数: 总结: 直接插入排序的特性总结...元素集合越接近有序,直接插入排序算法的时间效率越高 2. 时间复杂度: O(N^2) 3. 空间复杂度: O(1) ,它是一种稳定的排序算法 4. 稳定性:稳定

    19120

    经典算法——直接插入排序

    直接插入排序 3. 代码实现 4. 算法效率 4.1 时间复杂度 4.2 空间复杂度 1....由于是在计算机中执行,所以通常先用伪代码来表示,清晰的表达出思路和步骤,这样在真正执行的时候,就可以使用不同的语言来实现出相同的效果。 2....直接插入排序 输入: n个数的序列,通常存放在数组中可能是任意顺序。...代码实现 Java 代码实现⚠️⚠️⚠️ @Test public void main() { // input data int[] a = {86, 34, 40, 7, 18, 38...对于直接插入排序来说,如果输入的元素已经是正向有序的,那么每次取出一个元素,在和已经排好的序列中的最后一个元素比较之后,就可以直接放到后面,循环都不用进,因为已经找到了它应该在的位置。

    38010
    领券