首页 > 编程语言 >排序算法之选择排序

排序算法之选择排序

时间:2024-10-09 12:52:49浏览次数:9  
标签:minIndex arr int 元素 选择 算法 排序

选择排序的思想是每次从未排序的部分中选择最小的元素,然后将其放在已经排序部分的末尾。

  1. 遍历数组,从第一个元素开始,将其视为当前最小元素。
  2. 在未排序的部分中,找到最小的元素,并记录其索引。
  3. 将最小的元素与当前位置的元素交换位置
  4. 重复步骤2和步骤3,直到遍历完整个数组

比如有一个数组arr=[8,2,4,5,1,6,0,1]
我们要进行选择排序,先选择最小的,然后选择第二小的,然后是选择第三小的,依次类推。
选择排序是一种是原地排序算法

选择排序算法是不稳定的排序算法

执行流程

  1. 从序列中找出最大的哪个元素,然后于最末尾的元素交换位置
  2. 执行完一轮之后,最后的哪个元素就是最大的元素
  3. 忽略掉上一轮中找到的最大元素,重复执行步骤1
package com.lut.sort;

import java.util.Arrays;

public class SelectionSort {


    public static void main(String[] args) {
        int[] arr = {8,2,4,5,1,6,0,1};
        selectionSort(arr);
        System.out.println(Arrays.toString(arr));

    }

    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; j < n; j++) {
                if(arr[j] < arr[minIndex]){
                    minIndex = j;
                }
            }

            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }
}

标签:minIndex,arr,int,元素,选择,算法,排序
From: https://blog.csdn.net/qq_64039411/article/details/142707287

相关文章

  • 代码随想录算法训练营第九天|344.反转字符串, 541. 反转字符串II,卡码网:54.替换数字
    344.反转字符串反转字符串比较简单,除了用reverse,可以用for循环,两头向中间夹,进行swapclassSolution{public:voidreverseString(vector<char>&s){inthalf=s.size()/2;intlength=s.size();for(inti=0,j=length-1;i<half;i++,j--){......
  • Day12-if选择结构
    Day12-if选择结构if单选择结构我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示语法:if(布尔表达式){//如果布尔表达式为true将执行的语句}实例:判断输入的字符串是不是HelloScannerscanner=newScanner(System.in);......
  • 随机算法
    算法导论这个文档是学习“算法设计与分析”课程时做的笔记,文档中包含的内容包括课堂上的一些比较重要的知识、例题以及课后作业的题解。主要的参考资料是Introductiontoalgorithms-3rd(ThomasH.)(对应的中文版《算法导论第三版》),除了这本书,还有的参考资料就是Algorithmsdesi......
  • 算法分析
    算法导论这个文档是学习“算法设计与分析”课程时做的笔记,文档中包含的内容包括课堂上的一些比较重要的知识、例题以及课后作业的题解。主要的参考资料是Introductiontoalgorithms-3rd(ThomasH.)(对应的中文版《算法导论第三版》),除了这本书,还有的参考资料就是Algorithmsdesi......
  • 算法导论 (Part II)
    算法导论这个文档是学习“算法设计与分析”课程时做的笔记,文档中包含的内容包括课堂上的一些比较重要的知识、例题以及课后作业的题解。主要的参考资料是Introductiontoalgorithms-3rd(ThomasH.)(对应的中文版《算法导论第三版》),除了这本书,还有的参考资料就是Algorithmsdesi......
  • 二分查找算法
    二分查找算法基本思路二分查找的基本思路如下:找到中间元素:查找过程从数组的中间元素开始,如果中间元素恰好是目标元素,则查找过程结束。比较并缩小范围:如果中间元素不是目标元素,那么将中间元素与目标值进行比较:如果目标值小于中间元素,则说明目标值位于当前搜索范围的左半部分......
  • 选择 PDF 编辑器时要考虑什么?如何选择适用于 Windows 10 的 PDF 编辑器
    选择PDF编辑器时要考虑什么?随着技术的出现,您在网上浏览时肯定会遇到一些PDF软件。但是,选择PDF编辑器时需要考虑什么?如果您是重度用户并将在您的工作场所使用它,建议您找到专业、使用方便且能够帮助您完成任务的PDF软件。以下是您在寻找优秀编辑器时可能考虑的几件事:适......
  • 【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较]
      ......
  • 代码随想录算法训练营第四天|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点
    24.两两交换链表中的节点力扣题目链接(opensnewwindow)给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]......
  • 代码随想录算法训练营第三天|链表理论基础、203.移除链表元素、707.设计链表、206.反
    链表理论基础链表的类型单链表每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。双链表单链表中的指针域只能指向节点的下一个节点。双链表:每一个节点有......