定義
簡單選擇排序的基本思想:
第1趟疏虫,在待排序記錄r[1] ~ r[n]中選出最小的記錄永罚,將它與r[1]交換啤呼;
第2趟,在待排序記錄r[2] ~ r[n]中選出最小的記錄呢袱,將它與r[2]交換官扣;
以此類推,第i趟在待排序記錄r[i] ~ r[n]中選出最小的記錄羞福,將它與r[i]交換惕蹄,使有序序列不斷增長直到全部排序完畢。
定義圖解
簡單示例
Java
public class SelectSort {
public static void main(String[] args) {
int[] arr = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
selectSort(arr);
}
private static void selectSort(int[] arr) {
int size = arr.length;
for (int i = 0; i < size; i++) {
int minIndex = i;
for (int j = i + 1; j < size; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
//示例圖片上交換的位置
//swap(arr,j,i);
}
}
//優(yōu)化過性能更好
swap(arr, i, minIndex);
System.out.print(arr[i] + ",");
}
}
private static void swap(int[] arr, int x, int y) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
Kotlin
fun main(args: Array<String>) {
val arr: IntArray = intArrayOf(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
sortSelect(arr)
}
fun sortSelect(intArray: IntArray) {
val size = intArray.size
for (i in 0 until size) {
var minIndex: Int = i
var j: Int = i + 1
while (j < size) {
if (intArray[j] < intArray[minIndex]) {
minIndex = j
}
j++
}
swap(intArray, i, minIndex)
print("${intArray[i]},")
}
}
fun swap(intArray: IntArray, i: Int, j: Int) {
var temp = intArray[i]
intArray[i] = intArray[j]
intArray[j] = temp
}
遇到的坑
- 寫交換方法的時候卖陵,要用數(shù)組,這個跟基本類型有關(guān)系
- 如果把整形數(shù)組換成Object,這樣要使用Integer张峰,int不行
- kotlin的for循環(huán)和java的不一樣泪蔫,用while