排序算法--选择排序

动态演示

在这里插入图片描述

个人笔记

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。
首先在未排序的序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

Java代码实现

package com.guo;
public class Test {
    public static void main(String[] args) {
        //选择排序
        int[] num={8,3,4,7,2,1,11,22,3,5,18,22};
        num=quickSort(num);
        for(int a:num) {
            System.out.print(a+"\t");
        }
    }

    public static int[] quickSort(int[] num){
        for(int i=0;i<num.length-1;i++) {
            //找出没有排过序的元素中的最小(最大)值及其位置。
            //然后将这个最值放在正确的位置上
            //每一轮的最值都不一样,例如本次用的数组。
            //第一轮,最小是1,放在【0】。第二轮是2,放在【1】。第三轮是3,放在【2】。第四轮是3,放在【3】。
            
            // 先假设i处的元素就是最小的,让比大小也有个最初的基准
            // 此处记住下标和最值,其实只需记住下标即可,最值可以用 num[index] 的方式表示,这样能节省存储空间
            int index=i;
            int min=num[i];
            //(1)找最值,此处找的是最小
            for(int j=i+1;j<num.length;j++) {
                if(min>num[j]) {
                    min=num[j];
                    index=j;
                }
            }
            //判断这个最值是否在正确的位置上,不在就交换
            if(index!=i) {
                int temp=num[i];
                num[i]=num[index];
                num[index]=temp;
            }
        }
        return num;
    }
}

Python代码实现

A = [8,3,4,7,2,1,11,22,3,5,18,22]

for i in range(len(A)):
    min_idx = i
    for j in range(i + 1, len(A)):
        if A[min_idx] > A[j]:
            min_idx = j
    A[i], A[min_idx] = A[min_idx], A[i]

print("排序后的数组:")
for i in range(len(A)):
    print("%d" % A[i],end=" ")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值