站易CMS - 让每个人都可以轻松建站!
您现在的位置:首页?>?yabo.net?>?ASP.NET?>?C#实现数组元素的交集和并集运算

C#实现数组元素的交集和并集运算

来源:互联网 作者:funnyzak 发布时间: 2012-12-08 12:59:36 679人浏览 条评论

编写一个类实现数组元素的交集和并集运算
要求:
????? 1、要有构造函数对数组初始化
????? 2、包含交集和并集两个单独的方法
????? 3、要有一个打印数组元素的方法
????? 4、编写一个测试类测试数组
????? 5、要求控制台中要分别输出两个原数组以及将交集和并集运算结果输出

代码:

  1. using?System;?
  2. using?System.Collections.Generic;?
  3. using?System.Text;?
  4. namespace?ConsoleApplication4?
  5. {?
  6. ????class?Program?
  7. ????{?
  8. ????????static?void?Main(string[]?args)?
  9. ????????{?
  10. ????????????int[]?A?=?{?65,?42,?11,?8,?-4};?
  11. ????????????int[]?B?=?{?2,90,?2,?11,?33,?8};?
  12. ????????????Console.WriteLine("合并前的元素集A:");?
  13. ????????????foreach?(int?x?in?A)?
  14. ????????????{?
  15. ????????????????Console.Write("{0}??",?x);?
  16. ????????????}?
  17. ????????????Console.WriteLine("\n合并前的元素集B:");?
  18. ????????????foreach?(int?x?in?B)?
  19. ????????????{?
  20. ????????????????Console.Write("{0}??",?x);?
  21. ????????????}?
  22. ????????????Set?s?=?new?Set(A,?B);?
  23. ????????????if?(s.SetA?!=?null?&&?s.SetB?!=?null)?
  24. ????????????{?
  25. ????????????????Console.WriteLine("\n合并为:");?
  26. ????????????????foreach?(int?x?in?s.GetUnion())?
  27. ????????????????{?
  28. ????????????????????Console.Write("{0}??",?x);?
  29. ????????????????}?
  30. ?
  31. ????????????????Console.WriteLine("\n交集为:");?
  32. ????????????????foreach?(int?x?in?s.GetIntersection())?
  33. ????????????????{?
  34. ????????????????????Console.Write("{0}??",?x);?
  35. ????????????????}?
  36. ????????????}?
  37. ????????????Console.ReadKey();?
  38. ????????}?
  39. ????}?
  40. }?
  41. class?Set?
  42. {?
  43. ????private?int[]?setA;?
  44. ????private?int[]?setB;?
  45. ?
  46. ????public?int[]?SetA?
  47. ????{?
  48. ????????get??
  49. ????????{?
  50. ????????????return?setA;?
  51. ????????}?
  52. ????????set?
  53. ????????{?
  54. ????????????if?(IsRepeated(value))?
  55. ????????????{?
  56. ????????????????Console.WriteLine("\nA数组中有重复元素!");?
  57. ???????????????//?Application.Exit();?
  58. ?
  59. ????????????????//Console.WriteLine(IsRepeated(value));??
  60. ????????????}?
  61. ????????????else?
  62. ????????????{?
  63. ????????????????setA?=?value;?
  64. ????????????}?
  65. ????????}?
  66. ????}?
  67. ????public?int[]?SetB?
  68. ????{?
  69. ????????get?
  70. ????????{?
  71. ????????????return?setB;?
  72. ????????}?
  73. ????????set?
  74. ????????{?
  75. ????????????if?(IsRepeated(value))?
  76. ????????????{?
  77. ????????????????Console.WriteLine("\nB数组中有重复元素!");?
  78. ???????????????//?Application.Exit();?
  79. ?
  80. ????????????????//Console.WriteLine(IsRepeated(value));???
  81. ????????????}?
  82. ????????????else?
  83. ????????????{?
  84. ????????????????setB?=?value;?
  85. ????????????}?
  86. ????????}?
  87. ????}?
  88. ????//构造函数?
  89. ????public?Set(int[]?setA,?int[]?setB)?
  90. ????{?
  91. ????????SetA?=?setA;?
  92. ????????SetB?=?setB;?
  93. ????}?
  94. ????//判断数组中是否有元素重复,返回true表示有重复?
  95. ????private?bool?IsRepeated(int[]?array)?
  96. ????{?
  97. ????????bool?flag?=?false;?
  98. ?
  99. ????????for?(int?i?=?0;?i?
  100. ????????{?
  101. ???????????for?(int?j?=?0;?j<>
  102. ???????????{?
  103. ???????????????if?((array[i]?==?array[j])?&&?(i?!=?j))?
  104. ???????????????{?
  105. ???????????????????flag?=?true;?
  106. ???????????????????break;?
  107. ???????????????}?
  108. ???????????}?
  109. ????????}?
  110. ????????return?flag;?
  111. ????}?
  112. ????//判断element是否在setA中?
  113. ????private?bool?IsInSetA(int?element)?
  114. ????{?
  115. ????????bool?flag?=?false;?
  116. ????????foreach?(int?ele?in?setA)?
  117. ????????{?
  118. ????????????if?(ele?==?element)?
  119. ????????????{?
  120. ????????????????flag?=?true;?
  121. ????????????}?
  122. ????????}?
  123. ????????return?flag;??
  124. ????}?
  125. ????//求两个集合的交集?
  126. ????public?int[]?GetIntersection()?
  127. ????{?
  128. ????????//找出不同元素的个数?
  129. ????????int?count?=?0;?
  130. ????????int?aLength?=?0;?
  131. ????????int?bLength?=?0;?
  132. ????????
  133. ????????aLength?=?setA.Length;?
  134. ????????bLength?=?setB.Length;?
  135. ?
  136. ????????//?int?len?=?setA.Length;?
  137. ????????for?(int?j?=?0;?j?
  138. ????????{?
  139. ????????????if?(IsInSetA(setB[j]))?
  140. ?????????????{?
  141. ?????????????????count++;?
  142. ?????????????}?
  143. ?????????}?
  144. ????????int[]?c?=?new?int[count]?;?
  145. ????????int?len?=0?;?
  146. ????????for?(int?i?=?0;?i?
  147. ????????{?
  148. ????????????for?(int?j?=?0;?j?
  149. ????????????{?
  150. ????????????????if?(setA[i]?==?setB[j])?
  151. ????????????????{?
  152. ????????????????????c[len++]?=?setB[j];?
  153. ????????????????}?
  154. ????????????}?
  155. ????????}?
  156. ????????return?c;?
  157. ????}?
  158. ????//求两个集合的并集?
  159. ????public?int[]?GetUnion(?)?
  160. ????{?
  161. ?????????????int?aLength?=?0;?
  162. ?????????????int?bLength?=?0?;?
  163. ????????
  164. ????????????aLength?=?setA.Length;?
  165. ????????????bLength?=?setB.Length;?
  166. ????????????//找出不同元素的个数?
  167. ????????????int?count?=?0;?
  168. ????????????//?int?len?=?setA.Length;?
  169. ????????????for?(int?j?=?0;?j?
  170. ????????????{?
  171. ????????????????if?(IsInSetA(setB[j]))?
  172. ????????????????{?
  173. ????????????????????count++;?
  174. ????????????????}?
  175. ????????????}?
  176. ????????????//建一个新的数组,存放合并后的元素?
  177. ????????????int?x?=?aLength?+?bLength?-?count;?
  178. ????????????int?len?=?aLength;?
  179. ????????????int[]?c?=?new?int[x];?
  180. ?
  181. ????????????//把A数组中的元素先存入数组c?
  182. ????????????for?(int?i?=?0;?i?
  183. ????????????{?
  184. ????????????????c[i]?=?setA[i];?
  185. ????????????}?
  186. ????????????//在数组B中找出数组A中没有的元素,并放入数组C中?
  187. ????????????for?(int?i?=?0;?i?
  188. ????????????{?
  189. ????????????????int?j;?
  190. ????????????????for?(j?=?0;?j?
  191. ????????????????{?
  192. ????????????????????if?(setA[j]?==?setB[i])?
  193. ????????????????????{?
  194. ????????????????????????break;?
  195. ????????????????????}?
  196. ????????????????}?
  197. ????????????????if?(j?==?aLength)?
  198. ????????????????{?
  199. ????????????????????c[len++]?=?setB[i];?
  200. ????????????????}?
  201. ????????????}????
  202. ????????return?c;?
  203. ????}?
  204. }?
1人觉得很赞
0人觉得很烂
正在加载评论,请稍等...
验证码:
?