当前位置: 代码迷 >> 综合 >> 排序算法之选择排序(Selection Sort)
  详细解决方案

排序算法之选择排序(Selection Sort)

热度:49   发布时间:2023-11-21 04:19:47.0

选择排序(SelectionSort)


描述

  1. 首先在未排序的序列中找到最小/最大元素,存放到排序序列的起始位置
  2. 再从剩余未排序元素中继续寻找最小/最大元素,然后放到已排序序列的末尾
  3. 重复第二步,直到所有元素均排序完毕
  4. 是个不稳定的排序算法,不适合大规模数据的排列

案例

当前有一个数组 { 5,6,1,3,8,4,6,9,0,2 } ,用 选择排序* 对其进行 升序 排序

代码

代码思路:

  1. 寻找序列中最小元素,记录最小的下标位置
  2. 每一轮寻找结束后,交换一次,将该元素放到数列的一端

import java.util.Arrays;public class SelectionSort {
    public static void main(String[] args) {
    int[] a = {
    5,6,1,3,8,4,6,9,0,2};System.out.println("起始选择排序结果:"+Arrays.toString(a));//循环的轮数 a.length-1for(int i = 0;i < a.length - 1 ; i++){
    int minIndex = i;//由于每轮会将最小值放在数列开头,起始值位置为剩余数列起始位置,for(int j = i+1 ; j < a.length ; j++){
    //每一轮找到剩余数列的最小值的位置if(a[j]< a[minIndex]){
    minIndex = j;}}//一轮结束后交换一次,将当前位置的值换成对应最小值位置的序列值if(i != minIndex){
    int temp = a[i];a[i] = a[minIndex];a[minIndex] = temp;}System.out.println("第"+(i+1)+"次循环结果:"+Arrays.toString(a));}System.out.println("最终选择排序结果:"+Arrays.toString(a));}
}

控制台日志输出

起始选择排序结果:[5, 6, 1, 3, 8, 4, 6, 9, 0, 2]
第1次循环结果:[0, 6, 1, 3, 8, 4, 6, 9, 5, 2]
第2次循环结果:[0, 1, 6, 3, 8, 4, 6, 9, 5, 2]
第3次循环结果:[0, 1, 2, 3, 8, 4, 6, 9, 5, 6]
第4次循环结果:[0, 1, 2, 3, 8, 4, 6, 9, 5, 6]
第5次循环结果:[0, 1, 2, 3, 4, 8, 6, 9, 5, 6]
第6次循环结果:[0, 1, 2, 3, 4, 5, 6, 9, 8, 6]
第7次循环结果:[0, 1, 2, 3, 4, 5, 6, 9, 8, 6]
第8次循环结果:[0, 1, 2, 3, 4, 5, 6, 6, 8, 9]
第9次循环结果:[0, 1, 2, 3, 4, 5, 6, 6, 8, 9]
最终选择排序结果:[0, 1, 2, 3, 4, 5, 6, 6, 8, 9]
  相关解决方案