tkinter 子視窗_Tkinter教程-佈局管理器
阿新 • • 發佈:2020-12-18
給出兩個陣列,要求對陣列中的元素進行合併升序排序並去重。
尋瀑 2019-07-15 17:41:13 526 已收藏 4 分類專欄: 練習題 最後釋出:2019-07-15 17:41:13 首次釋出:2019-07-15 17:41:13 版權
-
import java.util.*;
-
-
/**
-
* 合併兩個陣列,去重並按升序排列。
-
* 1)將每個陣列進行升序排序
-
* 2)設定一個集合set(防止有重複元素),用來儲存新的陣列元素。
-
* 3)依次遍歷每個陣列,只要遍歷的個數沒有超過任意一個數組長度,就接著遍歷。遍歷的同時對兩個陣列中的元素進行比較。
-
* 如果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中。
-
* 4)此時一定有一個數組走完,則將另一個數組的所有元素新增到set中。
-
* 5)最後返回set集合的toArray();返回陣列。只不過返回的是Object[]。
-
*/
-
public
class
Demo2 {
-
public static void main(String[] args) {
-
int[] list1=
new
int[]{
1,
2,
8,
9,
2,
3};
-
int[] list2=
new
int[]{
2,
3,
1,
3,
8,
5,
4};
-
Object[] res = getRes(list1, list2);
-
for(Object o:res){
-
System.
out.print(o+
" ");
-
}
-
}
-
public static Object[] getRes(int[] list1, int[] list2){
-
Arrays.sort(list1);
-
Arrays.sort(list2);
-
int i=
0;
-
int j=
0;
-
Set<Integer>
set=
new HashSet<Integer>();
-
while(i<list1.length&&j<list2.length){
-
if(list1[i]<list2[j]){
-
set.
add(list1[i]);
-
i++;
-
}
else
if(list1[i]==list2[j]){
-
set.
add(list1[i]);
-
i++;
-
j++;
-
}
else{
-
set.
add(list2[j]);
-
j++;
-
}
-
}
-
while(i<list1.length){
-
set.
add(list1[i]);
-
i++;
-
}
-
while(j<list2.length){
-
set.
add(list2[j]);
-
j++;
-
}
-
return
set.toArray();
-
}
-
}
Arrays.sort(arr)底層使用的是雙軸快排。