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 + " ");
        }
    }
}

测试结果

相关推荐
岁忧1 小时前
(LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)
java·c++·算法·leetcode·面试·go
chao_7891 小时前
二分查找篇——搜索旋转排序数组【LeetCode】两次二分查找
开发语言·数据结构·python·算法·leetcode
秋说3 小时前
【PTA数据结构 | C语言版】一元多项式求导
c语言·数据结构·算法
Maybyy3 小时前
力扣61.旋转链表
算法·leetcode·链表
谭林杰4 小时前
B树和B+树
数据结构·b树
卡卡卡卡罗特5 小时前
每日mysql
数据结构·算法
chao_7896 小时前
二分查找篇——搜索旋转排序数组【LeetCode】一次二分查找
数据结构·python·算法·leetcode·二分查找
lifallen6 小时前
Paimon 原子提交实现
java·大数据·数据结构·数据库·后端·算法
lixzest6 小时前
C++ Lambda 表达式详解
服务器·开发语言·c++·算法
EndingCoder7 小时前
搜索算法在前端的实践
前端·算法·性能优化·状态模式·搜索算法