当前位置: 首页 > article >正文

java 选择排序

Java中的选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

以下是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;  
                }  
            }  
            // 将找到的最小值元素交换到它应该在的位置  
            int temp = arr[minIndex];  
            arr[minIndex] = arr[i];  
            arr[i] = temp;  
        }  
    }  
  
    public static void main(String[] args) {  
        int[] arr = {64, 25, 12, 22, 11};  
        selectionSort(arr);  
        System.out.println("Sorted array");  
        for (int i = 0; i < arr.length; i++)  
            System.out.print(arr[i] + " ");  
        System.out.println();  
    }  
}

在这个例子中,selectionSort 方法接收一个整型数组 arr 作为参数,并对其进行排序。方法内部,首先通过外层循环控制排序的总轮数(即需要选择多少个最小元素)。在每一轮中,内层循环负责在未排序的元素中找出最小元素的位置。找到后,通过一次交换,将该最小元素放到已排序序列的末尾(即当前外层循环的位置)。这样,随着外层循环的进行,已排序序列逐渐增长,直到整个数组排序完成。

选择排序的平均时间复杂度和最坏时间复杂度都是 O(n^2),其中 n 是数组的长度。因此,它也不是处理大数据集时最高效的排序算法之一。然而,由于其实现简单,它仍然是理解排序算法基础概念的一个好例子。


http://www.kler.cn/news/329164.html

相关文章:

  • 【易社保-注册安全分析报告】
  • 【中间件】fastDFS的相关知识
  • oracle解决关联查询报invalid number问题
  • 鸿蒙NEXT开发-组件事件监听和状态管理(基于最新api12稳定版)
  • calibre-web默认左上角字体修改
  • 【分布式微服务云原生】有哪些流行的微服务架构以及各自的组件,怎么完成服务治理等。
  • Spring MVC 常用注解
  • 深度学习自编码器 - 分布式表示篇
  • 鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发
  • 《算法岗面试宝典》重磅发布!
  • Java之方法的使用
  • 《OpenCV》—— 指纹验证
  • DAY18||530.二叉搜索树的最小绝对值差 |501.二叉搜索树中的众数| 236.二叉树的最近公共祖先
  • 车辆重识别(2021ICML改进的去噪扩散概率模型)论文阅读2024/9/29
  • CS 工作笔记:SmartEdit 里创建的是 CMS Component
  • 【Spring】深入理解控制反转-IOC
  • Linux网络操作命令与函数全面总结
  • 机器视觉工程师一直做调试,维护岗位,想转岗软件方面C#从零开始,快则三年不到,慢则一辈子不会
  • YOLO11改进 | 检测头 | 小目标遮挡物性能提升的检测头Detect_MultiSEAM【完整代码】
  • 好玩的水表电表
  • we3.0里的钱包是什么?
  • Linux——pod的控制器
  • AR 眼镜之-蓝牙电话-来电铃声与系统音效
  • PO2GO、PO2Vec论文阅读与模型复现报告
  • 【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】
  • 【环保背景高管1009】2022顶刊论文数据,环保背景高管对投资的影响探究
  • 初识算法 · 双指针(1)
  • LeetCode 面试经典150题 69.x的平方根
  • html嵌入百度地图
  • 酒店智能门锁SDK接口pro[V10] 门锁校验C#-SAAS本地化-未来之窗行业应用跨平台架构