資料的移動方式,可分為「直接移動」和「邏輯移動」兩種。直接移動改變兩個資料的位置,而邏輯移動,則是改變資料的指標。
資料移動使用的記憶體:內部排序,排序的資料量小,可以完全在記憶體中進行。外部排序,排序的資料量無法直接在記憶體內進行排序,而必須使用輔助儲存器。
排序演算法的選擇,通常由以下幾點決定
演算法是否穩定,排序過後,兩個相同值的記錄位置先後順序不變,則為穩定。
時間複雜度
空間複雜度
內部排序法簡介 排序
排序名稱
排序特性
簡單排序法
氣泡排序法(bubble sort)
穩定排序法;空間複雜度為最佳,只需乙個額外空間o(1)
選擇排序法
不穩定排序法;複雜度為最佳,只需乙個額外空間o(1)
插入排序發
穩定排序法;空間複雜度為最佳,只需乙個額外空間o(1)
希爾排序法
穩定排序法;空間複雜度為最佳,只需乙個額外空間o(1)
高階排序法
快速排序法
不穩定排序法;空間複雜度最差為o(n),最佳為o(log2n)
堆積排序法
不穩定排序法;空間複雜度為最佳,只需乙個額外空間o(1)
基數排序法
穩定排序法;空間複雜度為o(np),n為原始資料的個數,p為基地
**如下
package com.cjm.mvnbook.test8.sourcetest;
public
class sorttest ;
shellsort(arr);
}//氣泡排序
public
static
void
bubblesort(int arr)}}
}//選擇排序
public
static
void
selectsort(int arr)}}
}//插入排序
public
static
void
insertsort(int arr)
arr[j+1] = tmp;
showdata(arr);}}
//希爾排序
public
static
void
shellsort(int arr)
arr[jmp + j] = tmp;
}system.out.println("第" + (k++) + "次排序:");
showdata(arr);
jmp = jmp/2;}}
public
static
void
showdata(int arr)
system.out.println("\n");
}}
資料結構(Java) 排序
排序的基本概念 2 排序演算法的效能評價 a 評價排序演算法好壞的標準 執行時間和所需的輔助空間 演算法本身的複雜程度 b 排序演算法的空間複雜度 若排序演算法所需的輔助空間並不依賴於問題的規模n,即輔助空間是o 1 則稱之為就地排序。非就地排序一般要求的輔助空間為o n c 排序演算法的時間開銷 ...
Java 資料結構 排序
思想 n 個元素需要排序 n 1 趟,每趟比較相鄰的兩個元素,如果前乙個元素和後乙個元素不滿足大小順序規則,則交換位置,這樣一趟下來,一趟中的最大 最小 的元素就 沉 到最後面的位置。執行 m 趟排序後,整個元素序列中的最後面的 m 個元素就排好順序了,剩下就只需要將前面的 n m 個元素排好序即可...
資料結構JAVA 氣泡排序
package com.function.demo 01 author of 2014年12月31日 資料結構 氣泡排序 演算法描述 公升序排列 從第乙個元素開始,對陣列中兩兩相鄰的元素比較,將值較小的元素放在前面,值較大的元素放在後面,一輪比較完畢,乙個最大的數沉底成為陣列中的最後乙個元素,一些較...