美文网首页
排序算法之选择排序-java版

排序算法之选择排序-java版

作者: shengjk1 | 来源:发表于2020-04-12 09:18 被阅读0次

1.选择排序

1.1 选择排序的基本介绍

选择排序类似于冒泡排序,均属于内排,也可以看做是对冒泡排序的优化。因为冒泡排序是比较相邻的两个值,然后直接交换。而选择排序是找到一个最大值或者最小值之后,再进行交换。

1.2 选择排序思想

第一次从 arr[0] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[0] 交换;第二次从 arr[1] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[1] 交换;
第二次从 arr[2] ~ arr[n-1]中选择一个最大值或者最小值,与 arr[2] 交换;
依次类推。

1.3 选择排序的时间复杂度和空间复杂度等

算法名称 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性
选择排序 O(n^2) O(n) O(n^2) O(1) 稳定
  1. 代码演示
/**
 * @author shengjk1
 * @date 2020/3/30
 */
public class SelectSort {
    public static void main(String[] args) {
        int[] arr = {1, 10, 2, 30, -1};
        selectSort(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
    
    public static void selectSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                minIndex = arr[i] < arr[j] ? i : j;
            }
            if (minIndex != i) {
                int tem = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = tem;
            }
        }
    }
}

相关文章

  • 排序算法之选择排序-java版

    1.选择排序 1.1 选择排序的基本介绍 选择排序类似于冒泡排序,均属于内排,也可以看做是对冒泡排序的优化。因为冒...

  • java 实现排序算法之「选择排序」

    java 实现排序算法系列 继冒泡排序算法之后,选择排序终于和大家见面了。为什么冒泡排序之后要说选择排序呢,是因为...

  • 快速排序

    手写java版快速排序算法实现

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 【算法】排序(一)选择排序

    在排序算法中,最简单的莫过于选择排序了。 本文将介绍以下内容 排序思路算法实现(JAVA)测试阶段算法分析 排序思...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • Java版排序算法

    网上很多Java排序算法有错误,以下是本人经过整理校验后的算法。 1、冒泡排序 2、快速排序 3、选择排序 4、堆...

  • 五种常见排序算法实现(Java)

    Java-五种排序算法实现 前言及准备 这篇我们会介绍比较简单的五种排序算法:插入排序、冒泡排序、快速排序、选择排...

  • 算法理解之排序-选择排序

    算法理解之排序-选择排序 选择排序是一种简单直观的排序算法, 以当前点为锚点, 向后依次进行比较所有未排序元素, ...

  • 十大经典排序算法(java实现)

    前言 本文我们将以java代码实现十大经典排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序...

网友评论

      本文标题:排序算法之选择排序-java版

      本文链接:https://www.haomeiwen.com/subject/eexvmhtx.html