Java examples for Collection Framework:Array Sort
takes a list of integers and uses merge sort to sort them and returns a new array
//package com.java2s; public class Main { /**//from w w w. j a va2 s. c o m * This function takes a list of integers and uses merge sort to sort them * and returns a new array * @param list * @return */ public static Integer[] mergeSort(Integer[] list) { if (list.length == 1) return list; int middle = list.length / 2; Integer[] left = new Integer[middle]; for (int x = 0; x < middle; x++) left[x] = list[x]; //System.out.print("left:"); printArray(left); Integer[] right = new Integer[list.length - middle]; for (int x = 0; x < list.length - middle; x++) right[x] = list[middle + x]; //System.out.print("right:"); printArray(right); return merge(mergeSort(left), mergeSort(right)); } /** * This function merges two already sorted lists (in ascending order) * Approach: * - just keeps two pointers and moves pointer along for whichever * list is being used to create the new list * @param list1 * @param list2 * @return */ public static Integer[] merge(Integer[] list1, Integer[] list2) { int ptr1 = 0; int ptr2 = 0; int i = 0; Integer[] combined = new Integer[list1.length + list2.length]; /*System.out.println("Combining ->"); System.out.print("list 1:"); printArray(list1); System.out.print("list 2:"); printArray(list2);*/ while (ptr1 < list1.length || ptr2 < list2.length) { if (ptr1 >= list1.length) { combined[i] = list2[ptr2]; ptr2++; } else if (ptr2 >= list2.length || list1[ptr1] < list2[ptr2]) { combined[i] = list1[ptr1]; ptr1++; } else { combined[i] = list2[ptr2]; ptr2++; } i++; } /*System.out.println("\tCombined =>"); System.out.print("combined:"); printArray(combined);*/ return combined; } }