常見排序算法,待補充樹
阿新 • • 發佈:2018-06-06
generated rt+ rate practice amp emp 直接 list 字符 1,快速排序
非常高效但不穩定的排序算法,平均復雜度onlog(n),最壞o(n2)
public class Test1Practice {
public static void quickSort(int[] arr,int low,int high){
int start = low;
int end = high;
int key = arr[low];
while(start < end){
while(start < end && arr[end] >= key)
end--;
if(arr[end]<= key){
int temp = arr[end];
arr[end] = arr[start];
arr[start] = temp;
}
while(start < end && arr[start] <= key)
start++;
if(arr[start] >= key){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
if(start>low) quickSort(arr,low,start-1);//左邊序列。第一個索引位置到關鍵值索引-1
if(end<high) quickSort(arr,end+1,high);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[]{1,32,23,45,21,3,6,49,65,67,8,17};
int low = 0;
int high = arr.length ;
quickSort(arr,low,high-1);
for(int a : arr){
if(a != arr[arr.length -1])
System.out.print(a + ",");
else
System.out.print(a);
}
}
}
2,冒泡排序算法
穩定算法,平均o(n2),最壞o(n2)
public static void bubbleSort(int[] arr){
for(int i=0; i< arr.length-1;i++){
for(int j=0; j < arr.length-1-j;j++){
if(arr[j] > arr[j+1]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[]{56,32,23,45,21,3,6,49,65,67,8,17};
bubbleSort(arr);
for(int a : arr){
if(a != arr[arr.length -1])
System.out.print(a + ",");
else
System.out.print(a);
}
//數組轉為List
}
3,選擇排序算法
//對於給定的一組記錄,經過第一輪比較後得到最小的記錄,然後將該記錄的位置與第一個記錄的位置交換;接著對不包括第一個記錄以外的其他記錄進行第二次比較,得到最小記錄並與第二個位置記錄交換;
不穩定算法,平均o(n2),最壞o(n2)
public static void selectSort(int[] arr){
for(int i =0; i< arr.length-1;i++){
int index=i;
for(int j=i+1;j<arr.length;j++){
if(arr[j]<arr[index])
index=j;
}
if(index != i){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
4,直接插入排序
穩定算法,平均o(n2),最壞o(n2)
列表,集合的常見操作
1,數組,字符串的數組轉為list
String[] stringArray = {"hello","world","B"};
不能把基本類型的數組轉為列表
[] intArray = {, , , };
List<Integer> list = Ints.asList(intArray);
,是定長的,list.set(0, 100);
常見排序算法,待補充樹