算法讲解--选择排序、数组链表

2023-11-10

算法讲解--选择排序、数组链表


本文是对《算法图解》的第二章的学习的笔记。欢迎多多指正。

数组和链表

数组:
   
使用数组存储item意味着所有item在内存中都是相连的。在数组中存储新的item可能很麻烦,because if 没有了新空间,就得移动到内存的其他地方,因此添加新元素会很慢。数组删除元素也很麻烦,删除元素后,必须将后面的元素前移。
结决办法1 :预留空间。
缺点:
1、额外请求的位置可能用不上。这将会浪费内存。【占着**不拉*】相信你能猜测到啥意思 xixi
2、if 预留空间还不够,还是得转移。
结决办法2 :使用链表

链表:
   
链表中的元素可存储在内存中的任何地方。链表中的每个元素都存储了下一个元素的地址,从而使一系列随机内存地址串在一起。 使用链表添加元素很容易,只需将其放入内存,并将地址存储到前一个元素中就ok了,注意:使用链表不需要移动元素。删除操作:链表也是更好的选择,because 删除元素只需修改前一个元素指向的地址即可。

总结:
   
       数组读取的运行时间 O(1) 插入O(n) 删除 O(n)
       链表读取的运行时间 O(n) 插入O(1) 删除 O(1)
注意下哈。。。 再同一个数组中,所有元素的类型都必须相同(都为int 、double等) 弊端 引出集合

选择排序

example: 找出播放次数组多的乐队,必须检查列表中的每个元素。需要的时间O(n),对于这种O(n)的操作,需要执行n次。需要的总时间即 O(n2)

下面展示一些 内联代码片

   public int[] sort(int[] sourceArray) {
        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);

        // 总共要经过 N-1 轮比较,每一次找到最小的索引值
        for (int i = 0; i < arr.length - 1; i++) {
            int min = i;

            // 每轮需要比较的次数 N-i
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[min]) {
                    // 记录目前能找到的最小值元素的下标
                    min = j;
                }
            }

            // 将找到的最小值和i位置所在的值进行交换
            if (i != min) {
                int tmp = arr[i];
                arr[i] = arr[min];
                arr[min] = tmp;
            }

        }
        return arr;
   }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法讲解--选择排序、数组链表 的相关文章

  • 60秒轻松计算出任意一年任意一天星期几?

    60秒轻松计算出任意一年任意一天星期几 一 提出问题 60秒就可以轻松计算出任意一年任意一天星期几吗 你相信吗 如果能算出 连脑神经专家都认为是神童 大家可以通过度娘搜索 张戈 自闭症 连人民网都有报道 有图为证 如何快速计算出任意一年任意

随机推荐

  • Spring Security详解

    第一节 Spring Security 简介 Spring 是一个非常流行和成功的 Java 应用开发框架 Spring Security 基于 Spring 框架 提供了一套 Web 应用安全性的完整解决方案 一般来说 Web 应用的安全
  • maven高级学习

    maven高级 一 idea创建maven项目 1 1 idea中创建maven web项目 1 2 idea中使用tomcat 1 3 插件和依赖的区别 二 依赖管理 2 1 依赖配置 2 2 依赖传递 2 2 1 依赖传递中的冲突问题
  • Yii Framework 开发教程(14) UI 组件 MaskedTextField示例

    CMaskedTextField为格式输入框 可以为文本框指定Mask限制用户可以出入的文本格式 如本例使用99 99 9999 可以只允许输入类似日期的文本 修改View 添加CMaskedTextField 组件 php view pl
  • java比较mysql两个数据库_用java实现操作两个数据库的数据

    1 首先需要在jdbc的配置文件里面配置两个数据库的连接 数据库1的配置 driverClassName com mysql jdbc Driver url jdbc mysql 地址 3306 数据库名 useUnicode true c
  • 【SQL入门系列二】SQLZOO 分组

    分组 5 SUM and COUNT 5 SUM and COUNT Aggregate functions SUM COUNT MAX AVG SUM 世界总人口 SELECT SUM population FROM world Afri
  • springboot整合ehcache

    springboot整合ehcache springboot版本 2 5 1 1 pom文件
  • 12、计算机图形学——几何(网格细分与网格简化)

    一 网格细分 1 1 概念 网格细分指的是将原有模型上的网格分成更多个网格 从而将模型变得更加精细 提高渲染出来的效果 让画面更加漂亮 下图就是一个网格细分的示意 左图是细分前的效果 右图是细分后的效果 可见 细分后的面数更多 模型更加精细
  • java将网络图片下载并压缩导出到本地

    java将网络图片下载并压缩导出到本地 package com example demo ChartGraphics test import org apache tools zip ZipEntry import org apache t
  • 使用VsCode搭建Node.js服务器开发环境

    使用VsCode搭建Node js服务器开发环境 在进行Node js服务器开发时 一个好的集成开发环境可以帮助您更快地编写代码 并且提高程序的效率 在此推荐安装配置VSCode作为Node js服务器开发环境 下面介绍安装配置过程 Ste
  • ZYNQ ARM核之SCU

    Snoop Control Unit 窥探控制单元 详情见UG585 SCU主要是解决ARM的L1和L2的缓存协调 因为两个processor的缓存是共用的 和AXI总线的ACP存取的 也就是DMA等高速中断需求的外设 SCU 块将两个 C
  • javascript 基础知识之derfer 妙用

    javascript 一般是加载完后立即执行 但是有些时候并不想立即执行 而是等到页面装载完毕时再执行 怎么实现这样的需求呢 答案就是使用
  • DHCP技术原理详解

    今天给大家讲解一下DHCP的原理和技术细节 本文从DHCP基本原理 实现流程和DHCP重启后的流程和租约和续约机制三个方面对DHCP进行了全方位的讲解 基本上涵盖了DHCP的全方面 一 DHCP基本原理 DHCP Dynamic Host
  • JDBC编程——JDBC连接数据库六步骤

    JDBC编程的6步骤 实现数据库连接之前 我们要先理解一下URL 统一资源定位器 是跟数据库进行连接的时候 用来连接到指定远程数据库标识符 可以在该URL中指定连接用户名和密码 同时 对于不同的数据库有不同的标识 URL 统一资源定位符 U
  • sort排序的用法

    https www cnblogs com stones dream p 10183210 html
  • 【IT项目管理】第七章课后习题

    完成作业1 3的要求 使用 project 或其他项目管理工具 1 成本模型如下图 2 为项目每个月制定成本基线如下图 3 已知 Budget at Completion BAC 200000 Planned Value PV 120000
  • 深度学习 图像融合使用笔记 2023 harmonized

    目录 cvpr2023 INR Harmonization即将开源 CDTnet没开源 DCCF 图像滤镜 变色 pil灰度图转opencv
  • java Type 详解

    转自 https blog csdn net gdutxiaoxu article details 68926515 为什么要写这一系列的博客呢 因为在 Android 开发的过程中 泛型 反射 注解这些知识进场会用到 几乎所有的框架至少都
  • 简约精致的目录浏览程序:Files Photo Gallery

    引言 灵均说尽孤高事 全与逍遥意不同 勿埋我心 该程序给勿埋我心的感觉就是特别的简单 从头到尾就是一个php文件 但是它能够实现的功能却不容小觑 它用作在线相册是个不错的选择 简单介绍一下 Files是一个单文件的PHP应用程序 可以拖放到
  • 基于YOLOv7的头部解耦改进

    基于YOLOv7的头部解耦改进 利用YOLOX解耦头优化YOLOv7 提高计算机视觉识别率 近年来 计算机视觉技术不断发展 其中物体识别技术的提升对于多个领域具有重要意义 目前 一种被广泛使用的物体识别算法是 YOLO You Only L
  • 算法讲解--选择排序、数组链表

    算法讲解 选择排序 数组链表 数组和链表 选择排序 本文是对 算法图解 的第二章的学习的笔记 欢迎多多指正 数组和链表 数组 使用数组存储item意味着所有item在内存中都是相连的 在数组中存储新的item可能很麻烦 because if