直接插入排序:穩定排序,時間複雜度:o(n)~o(n^2),適用於少量元素。基本思想:將乙個元素插入到已排好序的列表中。
public static void insertsort(int array)
array[j+1] = key;
} }
shell排序:不穩定,o(nlogn),基本思想:把整個列表分成若干個子串行分別進行直接插入排序
/*
* shell排序呼叫的直接插入排序方法,當gap=1時等同於上乙個方法
*/private static void insertsort(int array,int gap)
array[j+gap] = key;
} }public static void shellsort(int array)
}
簡單選擇排序:不穩定,o(n^2),每次選擇未排序列表中最小的元素與第乙個數交換位置。
public static void selectsort(int array)
if(array[child]>array[s])else}}
private static void biuldingheap(int array)
}public static void heapsort(int array)
}
氣泡排序:穩定排序,o(n^2),基本思想:對未排序範圍內的數,從上到下,相鄰的數兩兩比較,讓較大的數往下沉。
public static void bubblesort(int array)}}
}
快速排序:不穩定排序,o(nlogn),選擇基準元素(通常第乙個),比它大的放右邊,比它小的放左邊,依次類推。
public static void quicksort(int array, int low, int high){
if(low穩定排序,o(nlogn),基本思想:將兩個有序列表合併為乙個有序列表。
/** 歸併排序
* @param array
* @param s
* @param len 每次歸併的有序集合的長度
*/public static void mergesort(int array, int low, int high){
int mid = (low + high)/2;
if(low穩定排序,o(logr(b)),從個位開始,每次依據該位上的數字將不同的元素放入不同的桶中,達到排序的目的。
public static void radixsort(int array, int d){
int k=0;
int n=1; //用以獲取基數的除數
int m=1; //控制排序在哪一位
int temp = new int[10][array.length]; //陣列的第一維表示可能的餘數0~9
while(m<=d){
int order = new int[10]; //陣列order[i]用來表示該位是i的數的個數
for(int i=0;i小結:
八大排序演算法Java實現
常見的八大排序演算法,它們之間的關係如下 經常碰到這樣一類排序問題 把新的資料插入到已經排好的資料列中。將第乙個數和第二個數排序,然後構成乙個有序序列 將第三個數插入進去,構成乙個新的有序序列。對第四個數 第五個數 直到最後乙個數,重複第二步。首先設定插入次數,即迴圈次數,for int i 1 i...
八大排序演算法java
本文只介紹演算法實現的 預設都這一已經理解演算法思想,若不理解可以參考八大排序演算法思想 交換兩個數 public static void swap int arr,int i,int j 氣泡排序 public static void bubblesort int arr for int i 0 ...
java八大排序演算法
學習左程雲演算法課初級班 1,歸併排序,這是分治的思想,例如有乙個陣列,先將左半部分排好序,再將右半部分排好序,最後再將兩邊的數通過乙個輔助陣列將它們逐個放到輔助陣列裡面,這個過程中逐漸比較兩邊頭位置的數的大小。求乙個陣列的中間位置,可以int mid l r l 1 右移運算 位運算 速度快一些。...