读书笔记:《算法图解》第二章 选择排序选择排序:#

  • 数组:所谓数组,是无序的元素序列。数组中的所有元素都具有相同类型(这一点和结构或类中的字段不同,它们可以是不同类型)。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(这一点也和结构和类中的字段不同,它们通过名称来访问)。
  • 链表:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。链表有很多种不同的类型:单向链表,双向链表以及循环链表。

链表擅长插入删除,数组擅长随机访问。

选择排序:#

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C语言C++游戏编程

零基础如何快速精通C语言?要注意什么?

困难的是,对于C语言,不论是数据类型、操作符、语句、函数,都或多或少、或简单或复杂地通过地址操作内存。

1352
来自专栏学习力

《Java从入门到放弃》JavaSE入门篇:集合

1497
来自专栏Android相关

Kotlin---扩展

通过data关键字来定义数据类。通常用来定义纯数据类型的结构体。定义的数据类只能有一个主构造函数定义该数据类中的变量。而在该类中,可以定义函数

823
来自专栏Java技术栈

Java 10 实战第 1 篇:局部变量类型推断

现在 Java 9 被遗弃了直接升级到了 Java 10,之前也发过 Java 10 新特性的文章,现在是开始实战 Java 10 的时候了。

1124
来自专栏PHP实战技术

解构赋值,你不能不懂!

相信大家不难从上述的几段代码案例总结出来解构赋值的规律,我总结到如下几点: 1、解构主体为数组或者对象。 2、解构源必须具备Iterator接口或者经过转换之后...

92230
来自专栏小灰灰

JDK容器学习之HashMap (三) : 迭代器实现

HashMap 迭代器实现方式 java的容器类,实现Collection接口的都会实现迭代器方式,Map则有点特殊,它不实现Collection接口,它的迭...

2205
来自专栏Java帮帮-微信公众号-技术文章全总结

【Java提高二】三大特性-继承

【Java提高】三大特性-继承 在《Think in java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够...

3489
来自专栏web前端教室

javascript 红皮高程(10)

继续string类型的相关知识哈,不细看不知道啊,这JS的知识点真是太细碎了。因为许多知识点都互相交织着,但某些属性却并不是所有的对象都有。例如: 转换字符...

2007
来自专栏Java帮帮-微信公众号-技术文章全总结

细说反射,Java 和 Android 开发者必须跨越的坎【面试+工作】

我来翻译一下:反射技术通常被用来检测和改变应用程序在 Java 虚拟机中的行为表现。它是一个相对而言比较高级的技术,通常它应用的前提是开发者本身对于 Java ...

1804
来自专栏Java学习123

10 个有关 String 的面试问题

1685

扫码关注云+社区

领取腾讯云代金券