4.24【数据结构】顺序表基础操作(二)
今晚主要写了顺序表的增(按位插入)删(按位删除、按值删除)查(按位查找、按值查找)基本功能函数。了解了顺序表的动态分配内存操作,尝试写了一下合并函数(直接合并,去重并排序的合并)。总结如下:
-
C语言中动态分配内存用malloc()函数实现,C++中通过new实现。之前总是不太理解new的用法,今日已理清。
new的主要用法是:先创建一个对应类型的指针,然后通过new语句分配内存给指针。这个指针的名字也就成为了这个类型变量的名字。调用变量的时候与静态分配内存的使用方法一致,或者应进一步理解为,内存的分配方式不影响数据的使用。
二维数组三维数组创建还要更麻烦一些。目前主要使用一位数组,等用到的时候再具体了解即可。
-
去重并排序的合并用到了快速排序算法。
这部分其实还未学到,只有一点粗略印象————两年前在看课的时候简单听了一下有分治思想的排序方法,当时感觉难理解。直到上周四老师领学的时候才知道这就是快排。虽然课上也还没有完全掌握,但是隐约感到了递归的过程很像一个二叉树。
二叉树从上方俯视,所有的数据结点就排成了一条线(一个顺序表)。定下的枢轴就是树的根节点。
第一步:设置两个指针分别指向头尾,然后同时向中间移动,按大小顺序进行对换,分出两个子序列,直到两指针会合为止。
第二步:对各子序列递归调用快排。
但是有一个划分操作还未弄懂。