排序算法之-选择

算法原理

在未排序的数列中找出最大(或最小)的元素,然后将其存入到已排序的数列起始位置,紧接着在剩余的未排序数列中继续查找最大(或最小)的元素,并将其放入到已排序的数列末尾,依次类推,直至未排序的数列中没有元素。

算法图解

算法实现

java 复制代码
public class SelectionSort {

    public void sort(int arr[]){
        int startIndex = 0;
        while (startIndex < arr.length-1){
            int minValue = arr[startIndex];
            int minIndex = startIndex;
            for(int i=startIndex+1;i<arr.length;i++){
                if(minValue > arr[i]){
                    minValue = arr[i];
                    minIndex = i;
                }
            }
            if(startIndex != minIndex){
                int temp = arr[minIndex];
                arr[minIndex] = arr[startIndex];
                arr[startIndex]=temp;
            }
            startIndex++;
        }
    }
}

测试

java 复制代码
public static void main(String[] args) {
        int arr[] = {9,7,1991,27,-1,-10,0,2,65,-100};
        SelectionSort selectionSort = new SelectionSort();
        selectionSort.sort(arr);
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
    }

结果

相关推荐
啊董dong11 小时前
noi-2025年12月16号作业
数据结构·c++·算法·noi
white-persist11 小时前
【攻防世界】reverse | simple-check-100 详细题解 WP
c语言·开发语言·汇编·数据结构·c++·python·算法
长安er11 小时前
LeetCode 01 背包 & 完全背包 题型总结
数据结构·算法·leetcode·动态规划·背包问题
小南家的青蛙11 小时前
LeetCode第2658题 - 网格图中鱼的最大数目
算法·leetcode·职场和发展
ZHang......12 小时前
LeetCode 1114. 按序打印
java·开发语言·算法
程序员欣宸12 小时前
LangChain4j实战之四:集成到spring-boot
java·人工智能·spring boot
慧都小项12 小时前
Parasoft Jtest 如何用 JSON 文件驱动Java 测试自动化
java·自动化·json
仰泳的熊猫12 小时前
1083 List Grades
数据结构·c++·算法·pat考试
Tan_Zhixia12 小时前
时间复杂度判断
数据结构·c++·算法
Hui Baby12 小时前
全局事务入口感知子事务方法-TCC
java·开发语言·数据库