数据结构与算法分析:计算两个有序表交集并集

《数据结构与算法分析,C语言描述》 表,栈与队列部分课后习题。

Just a test,记录。

outPut:

Array No.1:2 4 5 7 10 23
Array No.2:3 4 7 13 22 30
Sum intersection:2
4 7
Sum union section:10
2 3 4 5 7 10 13 22 23 30

Code:

//Code by Pnig0s1992
//Date:2012,3,22
#include <stdio.h>
#include <Windows.h>  

#define MAX_ITEM 12  

int getInterSection(int arr1[],int arr2[],int arrRc[]);
int getUnionSection(int arr1[],int arr2[],int arrRc[]);  

int main(int argc,char ** argv)
{
    int index = 0;
    int iArray1[6] = {2,4,5,7,10,23};
    int iArray2[6] = {3,4,7,13,22,30};
    int iResult[MAX_ITEM];
    printf("\nArray No.1:");
    for(index = 0;index< 6;index++)
    {
        printf("%d ",iArray1[index]);
    }
    printf("\nArray No.2:");
    for(index = 0;index<6;index++)
    {
        printf("%d ",iArray2[index]);
    }
    int sumInter = getInterSection(iArray1,iArray2,iResult);
    printf("\nSum intersection:%d\n",sumInter);
    for(int i=0;i<sumInter;i++)
    {
        printf("%d ",iResult[i]);
    }
    int sumUnion = getUnionSection(iArray1,iArray2,iResult);
    printf("\nSum union section:%d\n",sumUnion);
    for(int j = 0;j<sumUnion;j++)
    {
        printf("%d ",iResult[j]);
    }
    system("pause");
    return 0;
}  

int getInterSection(int arr1[],int arr2[],int arrRc[])
{
    int i = 0;
    int j = 0;
    int k = 0;
    while(i<6&&j<6)
    {
        if(arr1[i] == arr2[j])
        {
            arrRc[k] = arr1[i];
            i++,j++,k++;
        }
        else if(arr1[i] < arr2[j])
            i++;
        else
            j++;
    }
    return k;
}  

int getUnionSection(int arr1[],int arr2[],int arrRc[])
{
    int i = 0,j=0,k=0;
    while(i<6 && j<6 )
    {
        if(arr1[i] < arr2[j])
        {
            arrRc[k] = arr1[i];
            i++,k++;
        }else if(arr1[i] > arr2[j])
        {
            arrRc[k] = arr2[j];
            j++;k++;
        }else
        {
            arrRc[k] = arr1[i];
            i++,j++,k++;
        }
    }
    if(i<6)
    {
        for (;i<6;i++)
        {
            arrRc[k++] = arr1[i];
        }
    }else if(j<6)
    {
        for (;j<6;j++)
        {
            arrRc[k++] = arr2[j];
        }
    }
    return k;
}

本文出自 “About:Blank H4cking” 博客,请务必保留此出处http://pnig0s1992.blog.51cto.com/393390/813949

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, 数据结构
, int
, 描述的数据结构与算法
, 课后习题答案
, printf
, include
, index
, 有序表
, 算法 正则 java 交集
, Python并集
并集
,以便于您获取更多的相关知识。

时间: 2024-09-20 22:07:39

数据结构与算法分析:计算两个有序表交集并集的相关文章

Oracle对两个数据表交集的查询_oracle

正在看的ORACLE教程是:Oracle对两个数据表交集的查询.Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大.灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就是在SQL中几乎可以实现任何一种想法. 下面向大家介绍使用SQL查两个Oracle数据表查询的相同数据的方法,笔者感到这两种方法执行效率高.使用方便. 第一种方法:利用操作符intersect intersect操作符用来合并两个查询,返回两个查询中都存在的记录,即返回两个查询结果的交集,前提是

Oracle中对两个数据表交集的查询

oracle|数据 Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大.灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就是在SQL中几乎可以实现任何一种想法. 下面向大家介绍使用SQL查两个Oracle数据表查询的相同数据的方法,笔者感到这两种方法执行效率高.使用方便. 第一种方法:利用操作符intersect intersect操作符用来合并两个查询,返回两个查询中都存在的记录,即返回两个查询结果的交集,前提是两个查询的列的数量和数据类型必须完全相同.

数据结构教程 第三十课 静态查找表(二)有序表的查找

教学目的: 掌握有序表的折半查找法 教学重点: 折半查找 教学难点: 折半查找 授课内容: 一.折半查找的查找过程 以有序表表示静态查找表时,Search函数可用折半查找来实现. 先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止. 二.折半查找的查找实现 int Search_Bin(SSTable ST,KeyType key){ low=1;high=ST.length; while(low<=high){ mid=(low+high)/2; if EQ(key,

关于数据结构(c语言版)线性表的问题

问题描述 关于数据结构(c语言版)线性表的问题 写完线性表实验代码后,有些错误 不会调试 求大神帮帮忙! ps.错误截图:图片说明 代码: #include #include #include #define LIST_INIT_SIZE 100 //线性表存储空间的初始分量 #define LISTINCREMENT 10 //线性表存储空间的分配增量 typedef struct{ ElemType* elem; //存储空间基址 int length; //当前长度 int listsiz

数据结构实验之链表四:有序链表的归并

数据结构实验之链表四:有序链表的归并 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据. Input 第一行输入M与N的值:  第二行依次输入M个有序的整数: 第三行依次输入N个有序的整数. Output 输出合并后的单链表所包含的M+N个有序

20120920-AVL树定义《数据结构与算法分析》

AVL树节点声明: 1 struct AvlNode 2 { 3 Comparable element; 4 AvlNode *left; 5 AvlNode *right; 6 int height; 7 8 AvlNode( const Comparable & theElement,AvlNode *lt,AvlNode *rt,int h=0):element ( theElement),left(lt),right(rt),height(t) 9 }; 计算节点高度: 1 int he

php计算两个经纬度地点之间的距离

php计算两个指定的经纬度地点之间的距离,这个在做计算给定某个地点的经纬度,计算其附近的商业区,以及给定地点与附近各商业区之间的距离的时候,还是用的到的.下面是具体的函数代码以及用法示例. 关于如何获取某个地址的经纬度,可参照本站文章: 谷歌地图第三版根据地理位置获取经纬度的方法 <?php /** *求两个已知经纬度之间的距离,单位为米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位米 *@author www.Al

坐标距离计算:php 计算 两个坐标之间的距离

<?php  define('EARTH_RADIUS', 6378.137);//地球半径  define('PI', 3.1415926);  /**  * 计算两组经纬度坐标 之间的距离  * params :lat1 纬度1: lng1 经度1: lat2 纬度2: lng2 经度2: len_type (1:m or 2:km);  * return m or km  */  function GetDistance($lat1, $lng1, $lat2, $lng2, $len_t

计算两个时间之差的函数

'******************************'||Function TimeDiff(sBegin, sEnd)'||本函数计算两个时间的差,可以不用更改直接使用'||作者:machinecat 2001/10/26'****************************** '******************************'注:首先需要判断用户输入的sBegin与sEnd之间的大小'可以通过DataDiff函数获得两者之间的时间差,不需要进行复杂的时间换算'*