排序原理:
1.首先設(shè)定一個(gè)分界值,通過該分界值將數(shù)組分成左右兩部分;
2.將大于或等于分界值的數(shù)據(jù)放到到數(shù)組右邊,小于分界值的數(shù)據(jù)放到數(shù)組的左邊。此時(shí)左邊部分中各元素都小于
或等于分界值,而右邊部分中各元素都大于或等于分界值;
FileInputStream("reverse_merge_shell.txt"))); String line=null; while((line=reader.readLine())!=null){ //把每一個(gè)數(shù)字存入到集合中 list.add(Integer.valueOf(line)); }reader.close(); //把集合轉(zhuǎn)換成數(shù)組 Integer[] arr = new Integer[list.size()]; list.toArray(arr); // testMerge(arr);//使用歸并排序耗時(shí):1200 testShell(arr);//使用希爾排序耗時(shí):1277 }public static void testMerge(Integer[] arr){ //使用插入排序完成測試 long start = System.currentTimeMillis(); Merge.sort(arr); long end= System.currentTimeMillis(); System.out.println("使用歸并排序耗時(shí):"+(end-start)); }public static void testShell(Integer[] arr){ //使用希爾排序完成測試 long start = System.currentTimeMillis(); Shell.sort(arr); long end = System.currentTimeMillis(); System.out.println("使用希爾排序耗時(shí):"+(end-start)); } } 67891011121314151617181920212223242526272829303132333435
北京市昌平區(qū)建材城西路金燕龍辦公樓一層 電話:400-618-9090
類名 Quick
構(gòu)造
方法 Quick():創(chuàng)建Quick對象
成員
方法
1.public static void sort(Comparable[] a):對數(shù)組內(nèi)的元素進(jìn)行排序
2.private static void sort(Comparable[] a, int lo, int hi):對數(shù)組a中從索引lo到索引hi之間的元素
進(jìn)行排序
3.public static int partition(Comparable[] a,int lo,int hi):對數(shù)組a中,從索引 lo到索引 hi之間的元
素進(jìn)行分組,并返回分組界限對應(yīng)的索引
4.private static boolean less(Comparable v,Comparable w):判斷v是否小于w
5.private static void exch(Comparable[] a,int i,int j):交換a數(shù)組中,索引i和索引j處的值
3.然后,左邊和右邊的數(shù)據(jù)可以獨(dú)立排序。對于左側(cè)的數(shù)組數(shù)據(jù),又可以取一個(gè)分界值,將該部分?jǐn)?shù)據(jù)分成左右兩
部分,同樣在左邊放置較小值,右邊放置較大值。右側(cè)的數(shù)組數(shù)據(jù)也可以做類似處理。
4.重復(fù)上述過程,可以看出,這是一個(gè)遞歸定義。通過遞歸將左側(cè)部分排好序后,再遞歸排好右側(cè)部分的順序。當(dāng)
左側(cè)和右側(cè)兩個(gè)部分的數(shù)據(jù)排完序后,整個(gè)數(shù)組的排序也就完成了。








暫無數(shù)據(jù)