各种视频,各种文章上查阅后整理分享。站在巨人的肩膀上摘苹果。
1原理:选择排序和冒泡很像,主要思想就是从一个数组中找到最小的与数组第一位进行交换(最小的不是他自己,是他自己就忽略掉),
从第二位开始遍历,选出最小的元素与第二个元素交换,依次类推。
2时间复杂度:O(n^2),
3代码实现
public class SelectSort {
public static void main(String args[]) {
int arr[] = { 2, 568, 34, 46, 9, 23, 89, 43, 572, 684, 783, 543 };
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void selectSort(int arr[]) {
//遍历所有数
for (int i = 0; i< arr.length; i++) {
int minIndex = i;//以第一个为基准,认为它是最小
//把当前遍历的数和后边所有数依次比较,记录最小数下标
//1:为了寻找最小下标
for(int j = i+1; j< arr.length; j++) {//从第二个开始遍历
if(arr[minIndex] > arr[j]) {//后边的比逻辑上最小的小,则记录最小的下标
minIndex = j;//将当前位置赋值给最小的下标
}
}
//如果i与最小minIndex不相等,说明minIndex更小;
//找到最小下标后与数组中元素做对比不相等说明需要交互位置。
//如果上面的没找到的情况下它自己就是最小的,此时不需要进行交互所以排除掉
if(i != minIndex) {//不相等说明i对应的不是最小的所以需要与minIndex的进行交互
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;//交互位置
}
}
}
}
选择排序Java
最新推荐文章于 2023-05-22 20:07:24 发布