純C的代碼如下。 基本是先對(duì)兩個(gè)數(shù)組排序, 然后再求并集。
創(chuàng)新互聯(lián)為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括網(wǎng)站制作、成都做網(wǎng)站、重慶APP開發(fā)公司、成都小程序開發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
只簡(jiǎn)單地分析了一下交集的情況,求并集類似。百度知道這個(gè)代碼支持不怎么好,復(fù)制粘貼到 vs 之類的代碼編輯器里面縮進(jìn)一下會(huì)比較好看。
用兩個(gè)數(shù)組表示集合元素 對(duì)于AUB=C 先把A的數(shù)據(jù) 復(fù)制到C里面 然后 遍歷B數(shù)組,每個(gè)元素和A對(duì)比,如果存在 則略過,否則添加到C中。
以前寫過一個(gè)純C的, 用的是數(shù)組,模擬C++ STL里面的set_intersection,set_union和set_difference的實(shí)現(xiàn)。 稍作了修改,添加了些注釋,希望能幫到你。注意:必須先對(duì)輸入集合排序;輸出結(jié)果和C++ STL的測(cè)試結(jié)果吻合。
1、改一下排序函數(shù)就可以了。就可以不用每次去比較所有元素了。
2、用stl的muliset定義兩個(gè)變量a,b,a,b分別代表一個(gè)數(shù)組。本身就是有序的,然后將b中所有元素插入到a中去就行了,最后,a就是連個(gè)有序數(shù)組a,b的集合。
3、因?yàn)槟愕膬蓚€(gè)數(shù)組本身就是遞增有序數(shù)列,所以本題很簡(jiǎn)單。一個(gè)完整的c程序如下,程序在win-tc和Dev-c++下調(diào)試通過。
A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 思路: 每一次從B數(shù)組中取一值,然后在A數(shù)組里逐個(gè)比較,如果有相等的,則保存。該算法復(fù)雜度為 O(MN). M, N 分別為數(shù)組 A B 的長(zhǎng)度。
以前寫過一個(gè)純C的, 用的是數(shù)組,模擬C++ STL里面的set_intersection,set_union和set_difference的實(shí)現(xiàn)。 稍作了修改,添加了些注釋,希望能幫到你。注意:必須先對(duì)輸入集合排序;輸出結(jié)果和C++ STL的測(cè)試結(jié)果吻合。
有辦法,首先,先把兩個(gè)數(shù)組從小到大排序,然后用兩個(gè)指針分別指向兩個(gè)數(shù)組。
那么,程序就可以簡(jiǎn)化成,設(shè)數(shù)組key[52],用于記錄字母出現(xiàn)次數(shù)。掃描一次集合A,把出現(xiàn)的字母計(jì)到key的對(duì)應(yīng)位置里。同理掃描一次集合B。查看key數(shù)組,=2的對(duì)應(yīng)字母輸出到集合C,C就是所求交集。