线性表应用-有序顺序表归并
来源:互联网 发布:python量化 编辑:程序博客网 时间:2024/04/29 07:09
有序表归并算是顺序表中的一种算法操作,是顺序表其他应用的基础,例如,一元稀疏多项式运算和稀疏矩阵。
有序表归并是指将两个已经排好顺序的顺序表A,B,合在一起组成一个新的有顺序的顺序表C。
算法操作可以分为:
1、为新的顺序表listMerge分配内存空间,并初始化C(指定大小等)
2、插入,先比较list1和list2的数据哪个大哪个小,并按照大小顺序逐个插入到listMerge中
3、当list1或list2中所有数据都插入完毕后,剩下另一个list2或list1中还有剩余的数据时,将所有剩余的数据全部插入到listMerge中(其中不用再比较大小,因为list1或list2中剩下的元素一定是排在listMerge最后一个元素后面,且list1或list2中剩下的元素都是有序排列的)
typedef struct { int length; int size; int* listData;}SqList;SqList *listMerge(const SqList* list1, const SqList* list2){ //初始化listMerge SqList *listMerge = (SqList*)malloc(sizeof(SqList)); int i=0, j=0, k=0,len; len = list1->length + list2->length; listMerge->listData = (int*)malloc(len * sizeof(int)); //用i记录遍历list1的位置,用j记录遍历list2的位置,用k记录listMerge的位置 //当i和j都小于list1和list2的长度 while (i < list1->length && j < list2->length) { //按照数据大小插入到listMerge中 if (list1->listData[i] < list2->listData[j]) { listMerge->listData[k++] = list1->listData[i++]; } else { listMerge->listData[k++] = list2->listData[j++]; } } //当list1或list2中的表还有剩余元素没插入时,可以全部插入 //这种情况是当list1的长度不等于list2长度时 while (i < list1->length) { listMerge->listData[k++] = list1->listData[i++]; } while (j < list2->length) { listMerge->listData[k++] = list2->listData[j++]; }}
0 0
- 线性表应用-有序顺序表归并
- [SDUT](3329)顺序表应用5:有序顺序表归并 ---有序表归并(线性表)
- 顺序表应用 有序顺序表 归并
- 有序顺序表归并
- 有序顺序表归并
- 有序顺序表归并
- 有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 【3329】顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- ScrollView嵌套ViewPager的滚动冲突,以及ViewPage中的高度自适应问题解决
- 怎样控制viewpager的滑动速度
- iOS每日一记------------之 中级完美大整理
- 播放gif 动画
- Elasticsearch如何安装中文分词插件ik
- 线性表应用-有序顺序表归并
- supervisor
- Jquery操作radio,checkbox,select表单操作实现代码
- iOS基于WebSocket聊天机制(主要运用Facebook第三方SocketRocket)
- iOS 10 兼容
- Java:Struts2+Hibernate4+Spring实现图友网
- java--联系人管理系统(2)
- Java Math.pow(x,y)的使用坑
- html drag 拖拽元素