您的位置:首页 > 其它

选择排序

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: