原理:
比較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.氣泡排序法...