十大经典排序算法-选择排序
2021-03-03 10:27
标签:pre 图片 依次 选择排序 system alt 时间复杂度 creat 算法 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。 O(n2) 的时间复杂度 十大经典排序算法-选择排序 标签:pre 图片 依次 选择排序 system alt 时间复杂度 creat 算法 原文地址:https://www.cnblogs.com/andrew037/p/14396546.html一、算法步骤
2、时间复杂度
3、代码实现
import java.util.Arrays;
/**
* Created with IntelliJ IDEA.
* User: Andrew
* Date: 2021/02/10
* Time: 19:49
* Description: No Description
*/
public class SelectSort {
public static void main(String[] args) {
int[] arr = new int[]{3,4,5,7,1,2,0,3,6,8};
// 排序前数组
System.out.println(Arrays.toString(arr));
selectSort(arr);
// 排序后的数组
System.out.println(Arrays.toString(arr));
}
public static void selectSort(int[] arr){
// 遍历所有的数
for (int i = 0; i arr[j]){
// 记录最小的那个数的下标
minIndex = j;
}
}
// 如果最小的数和当前遍历的下标不一致,说明下标为minIndex的数比当前遍历的数更小
if (i != minIndex){
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
}
/**
* Created with IntelliJ IDEA.
* User: Andrew
* Date: 2021/02/10
* Time: 19:59
* Description: No Description
*/
/**
* 选择排序:
* 本质:
* 1. 首先选择第 1 个数为最小的数, 然后让这个数和后面所有的数比较,
* 2、一轮下来找到最小的数, 然后把最小的放在第 1 个位置
* 3、再选择第 2 个数为第 2 小的数, 再后面逐次比较,.......
*/
object SelectSortDemo {
def swap(array: Array[Int],index1:Int,index2:Int): Unit ={
val temp = array(index1)
array(index1) = array(index2)
array(index2) = temp
}
def main(args: Array[String]): Unit = {
val array = Array(5, 7, 2, 9, 4, 1, 0, 5, 7)
println(array.toBuffer)
selectSortDemo(array)
println(array.toBuffer)
}
def selectSortDemo(arr: Array[Int]): Unit = {
// 一共 len 个元素, 只需要找到 len-1 个就可以了, 剩下一个位置自动正确
for (i