一、什么是選擇排序
1.1、文字描述
選擇排序是一種簡(jiǎn)單直觀的排序方式,它的工作原理是每一次排序時(shí)先從待處理數(shù)據(jù)元素中選擇出一個(gè)最大(或最小)的元素,并存放在序列的末尾(起始)位置,每進(jìn)行一次排序后其操作元素就減少1,直到所有的數(shù)據(jù)元素都排序完成。
1.2、程序描述
定義一組數(shù)據(jù)元素,第一次排序時(shí),假定第一個(gè)元素是最大值 max,然后遍歷數(shù)組元素,找出最大值和最后一個(gè)元素進(jìn)行交換。第二次排序時(shí)還是假設(shè)第一個(gè)是最大元素并和剩下的元素進(jìn)行比較,找到最大的元素并放到倒數(shù)第二個(gè)的位置,一直循環(huán)下去直到排序完成。
二、代碼示例
public static void main(String[] args) {
int[] ints = {-24,-15,2,1,3,5,7,6,10,8,9,11,12,13};
/* 定義需要操作的數(shù)據(jù)長(zhǎng)度 */
int handleLength = ints.length;
int handleIndex = 0;
/* 默認(rèn)第一個(gè)是最大數(shù)據(jù) */
int max = ints[0];
/* 當(dāng)需操作數(shù)據(jù)長(zhǎng)度為1時(shí)就不需要操作了 */
while (handleLength > 1) {
for (int j = 0; j < handleLength; j++) {
if (ints[j] > max) {
/* 拿到最大值的下標(biāo)和數(shù)值 */
handleIndex = j;
max = ints[j];
}
/* 最后一次操作的時(shí)候進(jìn)行數(shù)據(jù)轉(zhuǎn)換操作 */
if (j == (handleLength - 1)) {
ints[handleIndex] = ints[handleLength - 1];
ints[handleLength - 1] = max;
max = ints[0];
handleLength--;
}
}
System.out.println(CollectionUtils.arrayToList(ints));
}
}
JAVA
Copy
輸出如下: