八大排序演算法的Java實現

2021-07-08 09:37:10 字數 1571 閱讀 9344

直接插入排序:穩定排序,時間複雜度: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 右移運算 位運算 速度快一些。...