排序算法学习笔记(三)选择排序

前言

今天学了排序算法,也跟大家分享一下。

1.定义

选择排序一种简单直观的排序算法。

2.算法思路

第一次找最小的与首位i交换,后面的与i++交换,以由小到大排序为例,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

3.思路演示

假设有有一组数据:27,45,95,23,39,55,67

第一轮:找到最小值23,和第一个位置27交换,得到有序集合{23}
23,45,95,27,39,55,67
第二轮:从无序集合中找到最小值27,和第二个位置45交换,得到有序集合{23,27}
23,27,95,45,39,55,67
第三轮:从无序集合中找到最小值39,和第三个位置95交换,得到有序集合{23,27,39}
23,27,39,45,95,55,67
第四轮:从无序集合中找到最小值45,不用交换,得到有序集合
{23,27,39,45}
23,27,39,45,95,55,67
第五轮:从无序集合中找到最小值55,和第四个位置95交换,得到有序集合
{23,27,39,45,55,95,67}
23,27,39,45,55,95,67
第六轮:从无序集合中找到最小值67,和第五个位置95交换,得到有序集合
{23,27,39,45,55,67,95}
23,27,39,45,55,67,95

4.代码

import java.util.Arrays;

public class SelectionSort {
    public static void main(String[] args) {
        int [] arr = {27,45,95,23,39,55,67};
        SelectionSort(arr);
        System.out.println(Arrays.toString(arr));
    }
    public static  void SelectionSort(int[] arr){
        //因为只需要遍历到倒数第二个的位置就好了,所以i < arr.length - 1;
        for (int i = 0; i < arr.length - 1; i++){
            for (int j = i + 1; j < arr.length; j++){
                if (arr[i] > arr[j]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }
}

5.算法特性:

算法稳定性:该算法是稳定的
时间复杂度:
1:n-1
2:n-2
3:n-34:n-4
……
n-1:1
比较次数=(n-1+1)(n-1)/2=(n^2-n)/2
时间复杂度=O(n²)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十三豆啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值