java算法入门 选择、冒泡、插入排序(三傻排序)

文章目录

  • 前言
  • 一、选择排序是什么?
    • 实现代码`
  • 二、冒泡排序是什么?
    • 实现代码`
  • 三、插入排序是什么?
    • 实现代码`
  • 总结


前言

这篇博客是本人自我学习使用作为自我学习的知识总结 ,如有什么写的不对的地方,也欢迎各位积极讨论。

一、选择排序是什么?

选择排序是一种简单直观的排序算法,他需要我们在未排序序列中找到最小(或最大)元素,将其放置在已排序序列的起始位置,然后从剩余未排序元素中继续寻找最小(或最大)元素,放置到已排序序列的末尾。以此类推,直到所有元素均排序完成。

其本质就是找到未排序序列的最大值或最小值将其放到已排序序列中,不断重复此过程,直至所有未排序序列全部加入到已排序序列内。

例:5 3 2 7 9(按升序排序)
其一开始的已排序序列为空,未排序序列为 5 3 2 7 9,其最小值为2,一轮排序后,
其已排序序列为2未排序序列为5 3 7 9,其最小值为3,一轮排序后,
已排序序列为2 3,未排序序列未5 7 9,其最小值为5,以此类推,
最后可得已排序序列为2 3 5 7 9

实现代码`

代码如下(示例):

 Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int min=0;
        int data[]=new int[105];
        for(int i=1;i<=n;i++){
            data[i]=in.nextInt(); //输入待排序数据并赋值到数组中
        }
        for(int i=1;i<n;i++){
            min=i;      	  //初始化标记所在位置
            for(int j=i;j<=n;j++){
                if(data[j]<data[min]){  //遍历未排序数组并与标记所在位置的值进行比较
                    min=j;	//如果数组中存在小于标记所在位置的值,则将该数所在位置为标记赋值
                 }
            }
            int t=data[min];
            data[min]=data[i];     // 将标记的值与未排序数组的首位交换位置,形成已排序数组。
            data[i]=t;
        }
        for(int i=1;i<=n;i++){
            System.out.print(data[i]+" ");
        }

二、冒泡排序是什么?

冒泡排序也是一种简单直观的排序算法,他需要我们在未排序序列中比较相邻的两个元素,如果前一个元素比后一个元素大(升序排序),则交换它们的位置,对每一对相邻元素重复上述步骤,从开始第一对到结尾的最后一对,这样在最后的元素应该是最大的数。针对所有的元素重复以上的步骤,除了最后一个,直至排序完成

例:5 3 2 7 9(按升序排序)
在这里插入图片描述在这里插入图片描述

实现代码`

代码如下(示例):

 Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int data[]=new int[105];
        for(int i=1;i<=n;i++){
            data[i]=in.nextInt();//输入待排序数据并赋值到数组中
        }
        for(int i=n;i>1;i--){
            for(int j=0;j<i;j++){
                if(data[j]>data[j+1]){ //与其相邻的元素进行比较,如果不符合预期则交换位置
                    int t=data[j];
                    data[j]=data[j+1];
                    data[j+1]=t;
                }
            }
        }
        for(int i=1;i<=n;i++){
            System.out.print(data[i]+" ");
        }

三、插入排序是什么?

插入排序是一种简单直观的排序算法,它的工作原理类似于整理扑克牌的过程。插入排序每次将一个待排序的元素插入到已经排序的数组中的适当位置,直到全部元素都插入完毕为止。

具体来说,他需要你从从第二个元素开始,将其视为当前要插入的元素。将当前元素与已经排序好的元素依次比较,直到找到合适的位置插入。将当前元素插入到已排序好的序列中的适当位置。
重复以上步骤,直到所有元素都被插入到正确的位置。

实现代码`

代码如下(示例):

 Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int a[]=new int[105];
        for(int i=1;i<=n;i++){
            a[i]=in.nextInt();
        }
        for(int i=2;i<=n;i++){ //从下标为2开始 因为下标为1只有其本身,其天然是符合排序规则的
            for(int j=i-1;j>=1&&a[j]>a[j+1];j--){ //将数据插入到对应位置中
                int t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
        for(int i=1;i<=n;i++){
            System.out.print(a[i]+" ");
        }

总结

上述便是三傻排序的实现思路和实现代码,其中自我感觉插入排序代码最简单也最为实用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值