Java—选择排序

选择排序是一种简单但高效的排序算法。它的基本思想是从未排序的部分中选择最小(或最大)的元素,并将其放置在已排序部分的末尾。

实现步骤

具体实现选择排序的步骤如下:

  1. 遍历数组:从数组的第一个元素开始,依次遍历到倒数第二个元素。假设数组长度为n,则需要进行n-1次遍历。
  2. 查找最小元素:在当前未排序部分中,通过比较找到最小的元素。
  3. 交换元素:将最小元素与当前位置的元素交换位置,将最小元素放到已排序部分的末尾。
  4. 继续循环:重复执行上述步骤,直到所有元素都被排序完成。

选择排序的关键点在于每次遍历时,都会找到当前未排序部分中的最小元素,并将其放置在已排序部分的末尾。这样,在每一次遍历后,已排序部分都会增加一个元素,未排序部分减少一个元素,直到最后所有的元素都被排序完成。

选择排序的时间复杂度为O(n^2),其中n是数组的长度。尽管在大规模数据排序时性能相对较差,但对于小规模或部分有序的数组,选择排序是一种简单有效的排序算法。

代码实现

下面是选择排序的示例代码(使用Java语言实现):

java 复制代码
public class SelectionSort {
    public static void selectionSort(int[] arr) {
        int n = arr.length;

        // 遍历数组
        for (int i = 0; i < n-1; i++) {
            // 找到未排序部分中的最小元素的索引
            int minIndex = i;
            for (int j = i+1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            
            if(minIndex != i){
                // 将最小元素和当前位置交换
                int temp = arr[minIndex];
                arr[minIndex] = arr[i];
                arr[i] = temp;
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {64, 25, 12, 22, 11};

        System.out.println("原始数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }

        selectionSort(arr);

        System.out.println("\n排序后的数组:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

测试结果

相关推荐
Solitudefire16 分钟前
蓝桥杯刷题——day9
算法·蓝桥杯
三万棵雪松1 小时前
1.系统学习-线性回归
算法·机器学习·回归·线性回归·监督学习
Easy数模1 小时前
基于LR/GNB/SVM/KNN/DT算法的鸢尾花分类和K-Means算法的聚类分析
算法·机器学习·支持向量机·分类·聚类
2401_858286111 小时前
117.【C语言】数据结构之排序(选择排序)
c语言·开发语言·数据结构·笔记·算法·排序算法
thesky1234562 小时前
活着就好20241226
学习·算法
td爆米花2 小时前
C#冒泡排序
数据结构·算法·排序算法
chenziang12 小时前
leetcode hot100
算法·leetcode·职场和发展
执着的小火车2 小时前
02-18.python入门基础一基础算法
数据结构·python·算法·排序算法
梦茹^_^2 小时前
排序算法(系列)
数据结构·python·算法·排序算法·希尔排序·基数排序·计数排序和桶排序
花开盛夏^.^3 小时前
Timsort算法
数据结构·算法·排序算法