Java选择排序
算法步骤
设数组为a[0…n-1]。
1. 初始时,数组全为无序区为a[0..n-1]。令i=0
2. 在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交换。交换之后a[0…i]就形成了一个有序区。
3. i++并重复第二步直到i==n-1。排序完成。
算法图示
算法基本性能
排序方法 | 平均情况 | 最好情况 | 最坏情况 | 控件复杂度 | 稳定性 |
选择排序 | O(n2) | O(n2) | O(n2) | O(1) | 不稳定 |
Java代码
package com.sort; import java.util.Random; public class Main3 { // 从小到大 private static void sort(int[] array) { if (array.length <= 1) { return; } for (int i = 0; i < array.length - 1; i++) { int min = i; /** * 在i+1~array.length-1的下标范围内找出最小的一个元素的下标 */ for (int j = i + 1; j < array.length; j++) { if (array[min] > array[j]) { min = j; } } /** * 如果最小的下标变化了,那么交换 */ if (min != i) { int temp = array[i]; array[i] = array[min]; array[min] = temp; } } } /** * 获取指定长度的随机数组 */ public static int[] getRandomArray(int n) { int[] array = new int[n]; Random random = new Random(); for (int i = 0; i < array.length; i++) { array[i] = random.nextInt(500); } return array; } /** * 打印指定数组 */ public static void outputArray(int[] array) { for (int i : array) { System.out.print(i + " "); } System.out.println(""); } public static void main(String[] args) { int[] array = getRandomArray(10); outputArray(array); sort(array); outputArray(array); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了