数据结构与算法java实战篇--排序

目录

一.冒泡排序

二.选择排序

 三.插入排序


一.冒泡排序

        冒泡排序从最左边开始,比较下标为0和后面一个元素的大小,如果出现前一个元素大于后一个元素就交换两个元素的位置,然后下标加1,直到元素比较完,此时元素的最后一个就是所有元素中最大的元素,循环比较,依次找出最大,次大的元素。

冒泡排序用到了两个for循环,时间复杂度为O(N^{2})

冒泡排序代码:

public void bubblesort(int[] nums){
    int in,out,stemp;   
    for (out=nums.length-1;out>1;out--){   //外循环out记录没有完成排序的元素个数
        for (in=0;in<out;in++){             //内循环比较两个元素大小
            if (nums[in] > nums[in+1]){  
                stemp=nums[in+1];           //如果满足条件,交换元素
                nums[in+1]=nums[in];
                nums[in]=stemp;
            }
        }
    }
}

二.选择排序

        选择排序算法思路是先从最左边两两比较,找到这些元素中最小的元素,然后将最小的元素移到最左边下标为0处,然后再找剩下中最小的,移动到下标为1处,循环如此。

时间复杂度度:O(N^{2})

选择排序代码:

public void selectionsort(int[] nums){
   int in,out,min;
   int temp;
   for (out=0;out< nums.length-1;out++){
       min=out;   //保证每一次out循环的min都是最左边的元素
       for (in=out+1;in<nums.length;in++) {
           if (nums[in] < nums[min]) {
               //如果目标元素小于nums[min],交换下标,向后继续比较,直到找到最小元素
               min = in;
           }
       }
       //将最小的元素移动到最左边
       temp = nums[min];
       nums[min] = nums[out];
       nums[out] = temp;
   }
}

 三.插入排序

        插入排序将元素分为左右两边,左边已经排序好,右边没有排序,将右边的和左边的元素进行比较,找的该元素应该插入的位置然后插入。

插入排序时间复杂度:O(N)

  插入排序代码:

public void insertionsort(int[] nums){
    int out,in;
    for (out=1;out<nums.length;out++){
        int temp=nums[out];    //设置标志位
        in=out;
        while (in>0&&nums[in-1]>=temp){  //左边元素大于标志位元素
            nums[in]=nums[in-1];   //元素后移,从而空出标志元素的位置
            --in;   //向左移动,连续和左边的元素比较,查找标志元素应该插入的位置
        }
        nums[in]= temp;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前段被迫创业

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

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

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

打赏作者

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

抵扣说明:

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

余额充值