1. 程式人生 > 其它 >tkinter 子視窗_Tkinter教程-佈局管理器

tkinter 子視窗_Tkinter教程-佈局管理器

技術標籤:演算法練習題

給出兩個陣列,要求對陣列中的元素進行合併升序排序並去重。

尋瀑 2019-07-15 17:41:13 526 已收藏 4 分類專欄: 練習題 最後釋出:2019-07-15 17:41:13 首次釋出:2019-07-15 17:41:13 版權

     
  1. import java.util.*;
  2. /**
  3. * 合併兩個陣列,去重並按升序排列。
  4. * 1)將每個陣列進行升序排序
  5. * 2)設定一個集合set(防止有重複元素),用來儲存新的陣列元素。
  6. * 3)依次遍歷每個陣列,只要遍歷的個數沒有超過任意一個數組長度,就接著遍歷。遍歷的同時對兩個陣列中的元素進行比較。
  7. * 如果list1[i]<list2[j],則將list1[i]新增到set結果連結串列中;如果list1[i]=list2[j],則將list1[i]或list2[j]新增到set中,同時i++,j++;如果list2[j]<list1[i],則將list2[j]新增到set中。
  8. * 4)此時一定有一個數組走完,則將另一個數組的所有元素新增到set中。
  9. * 5)最後返回set集合的toArray();返回陣列。只不過返回的是Object[]。
  10. */
  11. public class Demo2 {
  12. public static void main(String[] args) {
  13. int[] list1= new int[]{ 1, 2, 8, 9, 2, 3};
  14. int[] list2= new int[]{ 2, 3, 1, 3, 8, 5, 4};
  15. Object[] res = getRes(list1, list2);
  16. for(Object o:res){
  17. System. out.print(o+ " ");
  18. }
  19. }
  20. public static Object[] getRes(int[] list1, int[] list2){
  21. Arrays.sort(list1);
  22. Arrays.sort(list2);
  23. int i= 0;
  24. int j= 0;
  25. Set<Integer> set= new HashSet<Integer>();
  26. while(i<list1.length&&j<list2.length){
  27. if(list1[i]<list2[j]){
  28. set. add(list1[i]);
  29. i++;
  30. } else if(list1[i]==list2[j]){
  31. set. add(list1[i]);
  32. i++;
  33. j++;
  34. } else{
  35. set. add(list2[j]);
  36. j++;
  37. }
  38. }
  39. while(i<list1.length){
  40. set. add(list1[i]);
  41. i++;
  42. }
  43. while(j<list2.length){
  44. set. add(list2[j]);
  45. j++;
  46. }
  47. return set.toArray();
  48. }
  49. }

Arrays.sort(arr)底層使用的是雙軸快排。