JAVA隨時筆記 四 常用的排序演算法實現

2021-08-20 22:58:21 字數 1662 閱讀 3002

原理:

比較array[n]和array[n+1]的大小,把大的數交換到後面,即array[n]>array[n+1],就交換。迴圈到陣列最後,就可以把最大值找出來,放到array[length-1]上。

第二次迴圈,把第二大的數交換到array[length-2]上面

迴圈n-1次就把最大的n-1個數找出來,最小的數就在array[0]處。

為了方便,這裡把交換的函式抽出來,如下,後面的幾個排序也會用到這個交換。

//氣泡排序

public

static

void

bubblesort(int array)}}

}//交換陣列中a位置和b位置的數

public

static

void

swap(int array,int a,int b)

}

原理:

確認array[n]的前面的數值都比array[n]小。

第一次,比較array[0]和array[1],把小的數交換到前面

第二次,比較array[2]和它前面的資料,放到合適的位置。

迴圈到最後,排序完成

/**

* 直接插入排序

*@param array

*/public

static

void

insertsort(int array)

array[j+1] = temp;

}}

原理:

希爾排序是把陣列根據希爾值分成n個部分,進行排序,再把間隔減小,再排序,最後間隔為1,再排序整個陣列就是有序的。

如: 陣列長度為10,預設的希爾值是2,也可以直接根據情況選擇其它數字。

當希爾值為2時,間隔為10/2=5,把陣列分成位置在[0,5],[1,6],[2,7],[3,8],[4,9]五個部分,對這五個分別進行排序,然後把上一次的間隔5/2(希爾值)=2作為間隔,分成[0,2,4,6,8]和[1,3,5,7,9]兩個部分。分別進行排序。最後間隔為2/2=1,也就是整個陣列進行直接插入排序。

/**

* 希爾交換排序

*@param array

*@param init

*/public

static

void

shellsortswap(int array,int init)

}swap(array,i,position);

}}

原理:

1、先從數列中取出乙個數作為基準數

2、分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊

3、再對左右區間重複第二步,直到各區間只有乙個數

/**

* 快速排序

*@param array

*@param left

*@param right

*/public

static

void

quicksort(int array,int left,int right)

int i = left,j = right,temp = array[left];

while (i!=j)

java 實現四種常用排序

氣泡排序演算法的運作如下 從後往前 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較...

java基礎學習筆記(四 常用基礎類)

主要有兩個方法 random r new random int i r.nextint 100 0,100 範圍內的隨機整數 double d r.nextdouble 0.0,1.0 範圍內的隨機小數enum和class inte ce的地位一樣。列舉類的所有例項都必須放在第一行展示,不需使用ne...

java的幾種常用的排序

排序是將一群資料,依指定的順序進行排列的過程 排序的分類 1.內部排序 指將需要處理的所有資料都載入到內部儲存器中進行排序,包括 交換式排序法,選擇式排序法和 插入式排序法 2.外部排序 資料量過大,無法全部載入到記憶體中,需要借助外部儲存進行排序,包括 合併排序法和 直接合併排序法 1.氣泡排序法...