Introduction to Java Programming and Data Structures, 12E, Y. Daniel Liang – MergeSort.java
Lecture Videos
public
class
MergeSort {public
static
void
mergeSort(int
[] list) {if
(list.length >1
) {int
[] firstHalf =new
int
[list.length /2
]; System.arraycopy(list,0
, firstHalf,0
, list.length /2
); mergeSort(firstHalf);int
secondHalfLength = list.length - list.length /2
;int
[] secondHalf =new
int
[secondHalfLength]; System.arraycopy(list, list.length /2
, secondHalf,0
, secondHalfLength); mergeSort(secondHalf); merge(firstHalf, secondHalf, list); } }public
static
void
merge(int
[] list1,int
[] list2,int
[] temp) {int
current1 =0
;int
current2 =0
;int
current3 =0
;while
(current1 < list1.length && current2 < list2.length) {if
(list1[current1] < list2[current2]) temp[current3++] = list1[current1++];else
temp[current3++] = list2[current2++]; }while
(current1 < list1.length) temp[current3++] = list1[current1++];while
(current2 < list2.length) temp[current3++] = list2[current2++]; }public
static
void
main(String[] args) {int
[] list = {2
,3
,2
,5
,6
,1
,-
2
,3
,14
,12
}; mergeSort(list);for
(int
i =0
; i < list.length; i++) System.out.print(list[i] +" "
); } }