# 排序之选择排序
选择排序就是构建有序序列,对于未排序的下一个位置,在未排序序列中从前往后扫描,选择合适的元素。
选择排序就是构建有序序列,对于未排序的下一个位置,在未排序序列中从前往后扫描,选择合适的元素。
插入排序就是构建有序序列,对于未排序的下一个数据,在已排序序列中从后往前扫描,找到合适的位置插入。
冒泡排序就是将数列中第一个关键字和第二个关键字比较,若为逆序,则交换两个关键字,继续比较第二个,第三个关键字,重复直到最后一个。这样子,数列中最大值就位于最后的位置。然后开始第二轮比较,直到 N-1 的位置。一直循环比较 N 轮,直到数列中所有的记录都排序好。冒泡排序总是从左往右遍历,并选择最大的关键字放在最左边。
关于查找算法。
前缀表达式,也叫波兰表达式(PN)。其特点是操作符置于操作数的前面。中缀表达式,操作符是以中缀的形式处于操作数的中间。中缀表达式中的括号是必需的。后缀表达式,也叫逆波兰表达式(RPN)。所有的操作符置于操作数的后面。
图是一种非线性结构,是一组有限个顶点(vertices)和一组连接顶点的边(edges)的集合。
堆(Heap)是一种特殊的树形结构,也叫二分堆(Binary Heap)。
由于二叉树的内容比较多,故分开来记录。
在计算机科学中,树是一种抽象数据结构(abstract data type)(ADT)或者是根据这种抽象数据结构(ADT)实现的数据结构。
串/字符串(String)是一种特殊的线性表,其数据元素为字符。串是仅由字符串构成的有限序列,是取值范围受限的线性表。一般记作S=‘a<sub>1</sub>a<sub>2</sub>···a<sub>n</sub>’,其中S是串名,单引号括起来的字符序列是串值。
队列,是一个特殊的线性表。它有两个位置,头部 front 和末端 end。在队列的末端进行插入元素,称为enqueue。在队列的头部进行删除元素,称为dequeue。
栈是一个抽象的线性数据结构,遵循后进先出 LIFO(Last In First Out)的原则,也就是说只能通过一端来实现数据存储和检索。在栈中进行插入和删除操作的一端称为栈顶(top),另一端称为栈底(bottom)。
双向链表(双链表),每个结点包含两个指针,分别指向当前结点的直接前驱 prev 和直接后继 next。所以,可以从表中的任意结点出发,访问它的前驱结点和后继结点。头结点的前驱和尾结点的后继分别指向 NULL。
链表是线性表里常见的数据结构,不需要连续存储到内存中。每一个结点都包括了存储数据的结点 data 以及指向下一个结点的指针 next。
数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。