-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSort.java
66 lines (60 loc) · 1.98 KB
/
Sort.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import java.util.ArrayList;
import java.util.List;
public class Sort {
public List<Integer> mergeSort(List<Integer> listToSort) {
if(listToSort.size() > 1) {
int midElementPos = listToSort.size()/2;
List<Integer> firstList = mergeSort(listToSort.subList(0, midElementPos));
List<Integer> secondList = mergeSort(listToSort.subList(midElementPos, listToSort.size()));
return merge(firstList, secondList);
} else {
return listToSort;
}
}
private List<Integer> merge(List<Integer> firstList, List<Integer> secondList) {
List<Integer> mergedList = new ArrayList<Integer>();
int firstListSize = firstList.size();
int secondListSize = secondList.size();
if(firstListSize >0 && secondListSize>0) {
int firstListIter = 0;
int secondListIter = 0;
while(firstListIter < firstListSize && secondListIter < secondListSize) {
if(firstList.get(firstListIter) > secondList.get(secondListIter)) {
mergedList.add(secondList.get(secondListIter));
secondListIter++;
} else if(firstList.get(firstListIter) < secondList.get(secondListIter)) {
mergedList.add(firstList.get(firstListIter));
firstListIter++;
} else {
mergedList.add(firstList.get(firstListIter));
mergedList.add(secondList.get(secondListIter));
firstListIter++;
secondListIter++;
}
}
if(firstListIter < firstListSize) {
mergedList.addAll(firstList.subList(firstListIter, firstListSize));
} else if(secondListIter < secondListSize) {
mergedList.addAll(secondList.subList(secondListIter, secondListSize));
}
}
return mergedList;
}
public static void main(String[] args) {
System.out.println("Deep");
List<Integer> listToSort = new ArrayList<Integer>();
listToSort.add(10);
listToSort.add(65);
listToSort.add(34);
listToSort.add(100);
listToSort.add(12);
listToSort.add(11);
Sort mergeSort = new Sort();
System.out.println("Deep");
List<Integer> sortedList = mergeSort.mergeSort(listToSort);
System.out.println("Deep");
for(Integer i : sortedList) {
System.out.println(i);
}
}
}