0%

排序的概念

  • 排序:使一串记录,按照其中某个或某些关键字的大小,递增或递减的排列起来的操作
  • 稳定性:假定在待排序的记录序列中,存在多个具有相同关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,arr[ i ]=arr[ j ,且]arr[ i ]在arr[ j ]之前,而在排序后的序列中,arr[ i ]仍然在arr[ j ]之前,则称这种排序算法是稳定的,反之则不稳定。
  • 内部排序:数据元素全部放在内存中的排序
  • 外部排序:数据元素太多,不能同时存放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

常见的排序有:

  • 插入排序:直接插入排序,希尔排序
  • 选择排序:选择排序,堆排序
  • 交换排序:冒泡排序,快速排序
  • 归并排序:归并排序
  • 非比较排序:计数排序
阅读全文 »

树的概念

  1. 根没有父节点
  2. 子树互不相交
  3. 节点数 = 边数 + 1
  4. 节点的度 = 子树的个数
  5. 树的度:最大节点个数
  6. 树的高度:最大层次
阅读全文 »

栈是一种特殊的线性表,其只允许在固定的一端进行插入删除,进行数据的插入和删除操作的一段称为栈顶,而另一端称为栈底。栈之中的元素遵循后进先出的原则。

阅读全文 »

线性表

线性表n个具有相同特性的数据元素的有限序列,它是一种在实际使用中广泛使用的数据结构,常见的线性表有顺序表、链表、栈、队列等。线性表在逻辑上是线性结构,但是在物理上不一定连续(比如链表)。

阅读全文 »

一个合格的通讯录,应该支持增、删、查、改这四个基本操作,同时,我在这个通讯录中也运用了内存的动态管理与文件操作的知识,同时这个通讯录可以支持按照联系人姓名进行排序。

阅读全文 »

文件

  • 文件一般存储在外存(硬盘、光盘、U盘等)当中,而非内存中,文件可以分为文本文件以及二进制文件,其中文本文件保存的内容是字符串,而二进制文件保存的内容是二进制数据,每个文件末尾都有一个结束符,称之为EOF
  • 文件是通过操作系统进行管理的,每个文件都有一个独一无二的名字,文件的完整路径可分为绝对路径和相对路径。绝对路径是指从盘符开始一直到文件所在位置的目录的集合,而相对路径则以当前工作目录为基准,找到一个对应文件,想要用代码操作文件,需要先知道文件的路径。
阅读全文 »

内存的区域

在计算机中,内存可以被粗略的划分成,代码段、数据段、堆区以及栈区,

阅读全文 »

第一题

1
2
3
4
5
6
7
8
9
#include<stdio.h>

int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
int* ptr = (int*)(&a + 1);
printf("%d,%d", *(a + 1), *(ptr - 1));
return 0;
}

上面这道题中,* (a + 1)即相当于a[ 1 ],此时a即为首地址元素
\&a则取到一个类型为inr( * )[5]的指针,此时再用(int*)强制转化成int *指针所以此时指针 ptr 指向数组a最后一个元素之后的一个int类型元素的地址。在输出的时候,解引用(a+1)即为a[1] = 2,解引用(ptr-1)即为a[4]=5。

阅读全文 »