#include "stdio.h"
#include "stdlib.h"
#include "function.h"
void main()
{

Sqlist L,L1,L2;

InitList(&L);
InitList(&L1);
InitList(&L2);

ListInsert(&L, 1, 3);//f(n)
ListInsert(&L, 2, 5);
ListInsert(&L, 1, 8);
ListInsert(&L, 1, 11);

ListInsert(&L1,1,2);
ListInsert(&L1,2,6);
ListInsert(&L1,3,8);
ListInsert(&L1,3,9);
ListInsert(&L1,3,11);
ListInsert(&L1,3,15);
ListInsert(&L1,3,20);
//对顺序表L进行排序
int tmp = 0;
for (int i = 0; i <L.length-1; i++)
{
for (int j = i + 1; j < L.length; j++) {
if (L.elem[i] > L.elem[j]) {
tmp = L.elem[i];
L.elem[i] = L.elem[j];
L.elem[j] = tmp;
}

}
}

tmp = 0;

for (int i = 0; i <L1.length - 1; i++)
{
for (int j = i + 1; j < L1.length; j++) {
if (L1.elem[i] > L1.elem[j]) {
tmp = L1.elem[i];
L1.elem[i] = L1.elem[j];
L1.elem[j] = tmp;
}

}
}
int k = 0;
int j = 0;
while ((k<L.length)&&(j<L1.length))
{
if (L.elem[k] <= L1.elem[j])
{
ListInsert(&L2, L2.length + 1, L.elem[k]);
k++;
}
else
{
ListInsert(&L2, L2.length + 1, L1.elem[j]);
j++;

}
}

if (k >= L.length) {
for (int i = j; i < L1.length; i++)
{
ListInsert(&L2, L2.length + 1, L1.elem[i]);

}
}
if (j>=L1.length) {
for (int i = k; i < L.length; i++)
{
ListInsert(&L2, L2.length + 1, L.elem[i]);

}
}

//输出顺序链表中的所有值
for (int i = 0; i < L2.length; i++)
{
printf("元素的第%d个值为%d\n", i + 1, L2.elem[i]);

}

}

该算法的时间复杂度为O(f(L1)+f(L))

将非递减有序排列(L L1)归并为一个新的线性表L2 线性表L2中的元素仍按值非递减的更多相关文章

  1. 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。

    谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数. Google2009华南地 ...

  2. /编写一个函数,要求从给定的向量A中删除元素值在x到y之间的所有元素(向量要求各个元素之间不能有间断), 函数原型为int del(int A ,int n , int x , int y),其中n为输入向量的维数,返回值为删除元素后的维数

    /** * @author:(LiberHome) * @date:Created in 2019/2/28 19:39 * @description: * @version:$ */ /* 编写一个 ...

  3. 《笔记篇》非JS方法跳转到一个新页面,主要防止客户端禁止浏览器JS以后的跳转异常

    用非JS方法打开一个新页面,主要防止客户端禁止浏览器JS以后的跳转失效 <meta http-equiv="refresh" content="0; url=htt ...

  4. 缺少新的栈标识:报出异常FLAG_ACTIVITY_NEW_TASK flag-是由于activity关闭之后开启一个新的acitivity时没有标识在栈中,所以需要给一个栈标识

    异常(栈里必须有activity的flag标识): 05-02 08:43:36.173: E/AndroidRuntime(3328): android.util.AndroidRuntimeExc ...

  5. map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

    var numbers = [1, 4, 9]; var roots = numbers.map(Math.sqrt); // roots的值为[1, 2, 3], numbers的值仍为[1, 4, ...

  6. 获得一个list中某元素的索引值

    list = [1,2,3,3,2,1] list.index(1) # 只能获得首个1的索引值 如果要获得所有该元素的索引值 import numpy as np arr = np.array(li ...

  7. 将WinForm程序(含多个非托管Dll)合并成一个exe的方法

    原文:将WinForm程序(含多个非托管Dll)合并成一个exe的方法 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. ILMerge能把托管dl ...

  8. 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度为O(N),且要求不能用非基于比较的排序

    题目: 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度为O(N),且要求不能用非基于比较的排序 public static int maxGap(int nums[]) { if ( ...

  9. C语言合并两个集合(L,L1) 将L1中不在L中的元素插入到L线性表中

    void main(){ Sqlist L,L1; InitList(&L); InitList(&L1); ListInsert(&L, 1, 2); ListInsert( ...

随机推荐

  1. ora01940 无法删除当前连接的用户

    我用system这个用户登录oracle,想删除掉一个自己创建的用户user,在网上找到的方法都是说先查找到该用户连接的会话select username,sid,serial# from v$ses ...

  2. java 中的VO,PO,DTO,DO对象

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...

  3. 设计模式之原型模式(php实现)

    github地址:https://github.com/ZQCard/design_pattern1.先了解什么是浅拷贝与深拷贝 //深拷贝:赋值时值完全复制,完全的copy,对其中一个作出改变,不会 ...

  4. ES6里关于字符串的拓展

    一.子串识别 自从 JS 引入了 indexOf() 方法,开发者们就使用它来识别字符串是否存在于其它字符串中.ES6 包含了以下三个方法来满足这类需求: 1.includes():该方法在给定文本存 ...

  5. Hive错误记录

    创建表报错 Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apach ...

  6. 2017.3.31 spring mvc教程(五)Action的单元测试

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  7. C#如何改变字符串编码

    public string UTF8ToGB2312(string str)        {            try            {                    Encod ...

  8. Windows / Linux 一件编译zlib库

    一. 下载zlib库 : http://www.zlib.net 本文以  zlib-.tar.xz  为例 二. 解压文件得到 zlib- 文件夹,修改 zlib-/CMakeLists.txt 文 ...

  9. 利用 getsockname 和 getpeername 来获取某一个链接的本地地址和远端地址

    在两台计算机上建立一个网络连接,需要五个要素:本机地址 本机端口 协议类型 远端端口 远端地址.那么如何从一个建立好的连接上获取这些信息呢.就需要用到 getsockname  和 getpeerna ...

  10. Linux组件封装(一)中互斥锁MutexLock的封装

    本文对Linux中的pthread_mutex_t做一个简易的封装. 互斥锁主要用于互斥,互斥是一种竞争关系,主要是某一个系统资源或一段代码,一次做多被一个线程访问. 条件变量主要用于同步,用于协调线 ...