亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 选择排序详解:核心原理、完整代码与步骤演示

什么是选择排序?

选择排序是一种直观的比较型算法,反复从无序部分选出最小元素,交换到有序部分末尾。虽非大数据最优,但其简单性使其成为教学和小数组排序的理想选择。

算法工作原理

Java 实现

下面是演示选择排序的简洁 Java 程序,打印排序前后数组及每趟中间步骤。

package com.guru99;

public class SelectionSortAlgo {
    public static void main(String[] args) {
        int[] myArray = {860, 8, 200, 9};
        System.out.println("------选择排序前------");
        printArray(myArray);
        selection(myArray);
        System.out.println("------选择排序后------");
        printArray(myArray);
    }

    public static void selection(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            System.out.println("第 " + (i + 1) + " 趟排序");
            int index = i;
            for (int j = i + 1; j < array.length; j++) {
                System.out.println("比较 " + array[index] + " 和 " + array[j]);
                if (array[j] < array[index]) {
                    System.out.println(array[index] + " 大于 " + array[j]);
                    index = j;
                }
            }
            int smallerNumber = array[index];
            array[index] = array[i];
            array[i] = smallerNumber;
            System.out.println("交换元素: 交换后数组");
            printArray(array);
        }
    }

    private static void printArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        System.out.println();
    }
}

运行示例输出

------选择排序前------
860 8 200 9
第 1 趟排序
比较 860 和 8
860 大于 8
比较 8 和 200
比较 8 和 9
交换元素: 交换后数组
8 860 200 9
第 2 趟排序
比较 860 和 200
860 大于 200
比较 200 和 9
200 大于 9
交换元素: 交换后数组
8 9 200 860
第 3 趟排序
比较 200 和 860
交换元素: 交换后数组
8 9 200 860
------选择排序后------
8 9 200 860

性能特性

选择排序无论输入如何,比较次数固定为 O(n²),额外内存 O(1)。其确定性行为适合内存受限环境。

优化提示

java

  1. 精通 Java 数组:声明、初始化与操作全攻略
  2. Java Hello World 入门教程:从 JDK 安装到编译运行第一个程序
  3. Java 封装完全指南:数据隐藏、访问器/修改器、实战案例与核心优势
  4. Java 变量与数据类型完全指南(含示例)
  5. Java 类与对象:核心概念与实战示例
  6. Java String length() 方法:获取字符串长度(示例)
  7. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  8. Java String.contains() 方法:检查子字符串是否存在(实战示例)
  9. 精通 Java String.endsWith():检查字符串后缀(示例)
  10. Java BufferedReader 读取文件:实战指南与示例
  11. Java 冒泡排序详解:核心原理、完整代码与步骤演示
  12. Java 插入排序算法详解:核心原理、完整代码与步骤演示