选择排序
2021-02-26 14:34
302 查看
选择排序动图
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
package com.example.leetcode.easy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Arrays; /** * 选择排序 * @author LiPeng01 * @since 2021/2/26 2:23 下午 */ public class Choice { public static void main(String[] args) { int[] num = {3,2,1}; choose(num); Logger logger = LoggerFactory.getLogger(Bubble.class); logger.info(Arrays.toString(num)); } /** * 首先在未排序序列中找到最小元素,存放到排序序列的起始位置。 * 再从剩余未排序元素中继续寻找最小元素,然后放到未排序的起始位置。 * 重复第二步,直到所有元素均排序完毕。 * * @param nums */ public static void choose(int[] nums) { //以第i个元素为基础,n-1轮 for (int i = 0; i < nums.length-1; i++) { int min = i; //从第i+1个元素开始对比,n-1次 for (int j = i+1; j < nums.length ; j++) { if(nums[j] < nums[min]) { //记录最小下标 min = j; } } swap(nums,i,min); } } public static void swap(int[] nums, int i, int j) { int a = nums[i]; nums[i] = nums[j]; nums[j] = a; } }
相关文章推荐
- 算法-基本排序:冒泡、选择、插入
- 排序算法——直接选择排序
- 直接选择排序
- 【学习笔记】python版选择排序和插入排序及时间复杂度分析
- 【排序】选择排序模板
- 算法_基本排序算法之冒泡排序,选择排序,插入排序和希尔排序
- 选择排序
- 直接选择排序及交换二个数据的正确实现
- 算法学习 - 选择排序的稳定性讨论(C++实现)
- Java 选择排序、插入排序、希尔算法实例详解
- 排序 选择排序
- 排序法:改良的选择排序
- 快排,冒泡排,选择排序,希尔排序
- php 冒泡排序,选择排序、插入排序、快速排序
- 第13周项目4-数组的排序之体验选择排序
- 面试题必考系列:数组选择排序
- 直接选择排序
- C语言---选择排序
- 算法之基本排序(冒泡,选择,插入)
- java选择排序