Tag:print ima Traversal copy com get first lis data
Package Cn.xf.algorithm.ch04;import Java.util.arraylist;import Java.util.arrays;import java.util.List;import Org.junit.test;public class MergeSort {public void Msort (list<integer> data) {if (Data.size () <= 1) {return;} Copy both sides of the data list copya = new ArrayList (); List Copyb = new ArrayList (); for (int i = 0; i < data.size ()/2; ++i) {Copya.add (Data.get (i));} for (int j = data.size ()/2; J < Data.size (); ++j) {Copyb.add (Data.get (j));} Recursive sorted subset Msort (COPYA); Msort (COPYB);//after sorting, put back data in merge (Copya, COPYB, data);} /** * Merge two subsets * @param dataa * @param datab * @param data */public void merge (List<integer> dataa, List<integer> ; Datab, List data) {//traverse a,b,dataint i = 0, j = 0, k = 0;while (i < Dataa.size () && J < Datab.size ()) {//Traverse both sides Data if (Dataa.get (i) <= Datab.get (j)) {//bar A is put in Data.set (K, Dataa.get (i++));} else {Data.set (k, Datab.get (j + +));} K + = 1;} if (I >= dataa.size ()) {//If the first one is last, then copy the back of B into for (; J < Datab.size (); ++j) {Data.set (k++, Datab.get (j));}} else {for (; I < dataa.size (); ++i) {Data.set (k++, Dataa.get (i));}}} @Testpublic void Test1 () {list<integer> data = Arrays.aslist (8,3,2,9,7,1,5,4);//Sort MergeSort ms = new MergeSort () ; Ms.msort (data); for (int i:data) {System.out.print (i + "");}}}
Results:
"Fundamentals of Algorithmic Design and analysis" 13, merge sort