




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1.快速排序通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。/* Created by adrian on 2015/1/25.* 快速排序:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小* ,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。*/public class QuickSort / 初始化數組public static void
2、init(int array Random random = new Random(;for (int i = 0; i array.length; i+arrayi = random.nextInt(1000;/ 打印數組public static void display(int array for (int i = 0; i = hightreturn;/ 比較值int key = arraylow;/ 原始下標int low_index = low, hight_index = hight;while (low hight / 如果低位下標小于高位下標并且高位值不小于比較值while
3、(low = keyhight-;/ 符合條件的值(小于比較值被移到key的左邊arraylow = arrayhight;/ 如果低位下標小于高位下標并且低位值不大于比較值while (low hight & arraylow = keylow+;/ 符合條件的值(大于比較值被移到key的右邊arrayhight = arraylow;/ key值位置(此時的結果是low=hightarraylow = key;/ 遞歸左邊部分quick(array, low_index, low - 1;/ 遞歸右邊部分quick(array, low + 1, hight_index;/ 測試publi
4、c static void main(String args int array = new int100;init(array;display(array;quick(array, 0, array.length - 1;display(array;2.希爾排序希爾排序是按照不同步長對元素進行插入排序,當剛開始元素很無序的時候,步長最大,所以插入排序的元素個數很少,速度很快;當元素基本有序了,步長很小,插入排序對于有序的序列效率很高。/* Created by adrian on 2015/1/25.* 希爾排序:按照不同步長對元素進行插入排序,當剛開始元素很無序的時候,步長最大,所以插入排
5、序的元素個數很少* ,速度很快;當元素基本有序了,步長很小,插入排序對于有序的序列效率很高。*/public class ShellSort / 初始化數組public static void init(int array Random random = new Random(;for (int i = 0; i array.length; i+arrayi = random.nextInt(1000;/ 打印數組public static void display(int array for (int i = 0; i array.length; i+ / 換行if (i + 1 % 10
6、= 0/* 對每個步長增量序列排序* param array* 數組* param d* 步長* param begainIndex* 第一個排序下標*/private static void insert(int array, int d, int begainIndex for (int i = begainIndex + d; i array.length; i += d for (int j = begainIndex; j i; j += d if (arrayi j; k -= d arrayk = arrayk - d;arrayj = tempValue;/* param ar
7、ray* 數組*/public static void shell(int array / 步長int d = array.length 1;while (d = 1 / 對每個步長增量序列排序for (int i = 0; i = 1;/ 測試public static void main(String args int array = new int100;init(array;display(array;shell(array;display(array;3.歸并排序合并排序法是將兩個(或兩個以上有序表合并成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然后再把有序
8、子序列合并為整體有序序列。/* Created by adrian on 2015/1/26.* 歸并排序:首先是根據元素構建堆。然后將堆的根節點取出(一般是與最好一個節點進行交換,將前面len* -1個節點繼續進行堆調整的過程,然后再將根節點取出,這樣一直到所有節點都取出*/public class MergeSort / 初始化數組public static void init(int array Random random = new Random(;for (int i = 0; i array.length; i+arrayi = random.nextInt(1000;/ 打印數組
9、public static void display(int array for (int i = 0; i 1; if (len 1 int leftArray = Arrays.copyOfRange(array, 0, middle; int rightArray = Arrays.copyOfRange(array, middle, len; mergeSort(leftArray; mergeSort(rightArray; merge(array, leftArray, rightArray; / 合并數組,升序 private static void merge(int result, int left, int right int i = 0, l = 0, r = 0; while (l left.length & r right.length if (leftl rightr resulti = leftl; i+; l+; else re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論