算法--数组的冒泡排序和选择排序

  • 冒泡排序
  int[] a = {12 , 5  , 6 , 45 , 2 , 3};
        for (int i = 0 ; i<a.length - 1 ; i++){
            for (int j = 0 ; j < a.length - 1 ; j++){
                if (a[j] > a[j+1]){
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
  • 运算过程
      //for (int i = 0 ; i<a.length - 1 ; i++)这层循环意思是需要进行5次循环
        //for (int j = 0 ; j < a.length - 1 ; j++)这层循环过程
        循环第112 > 5   5   12
        循环第212 > 6   6   12
        循环第312 > 45  12  45
        循环第445 > 2   2   45
        循环第545 > 3   3   45
       i=0的循环结束out:5 , 6 , 12 , 2 , 3 , 45 
       每次循环都是将最大的一个放到最后面!!
然后在进行i = 1 的循环...
而且每次必须都进行比较,比较耗时...
  • 选择排序 效率快
 int[] a = {12 , 5  , 6 , 45 , 2 , 3};
        for (int i = 0 ; i<a.length - 1 ; i++){
            for (int j = i+1; j < a.length; j++){
                if (a[i] > a[j]){
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
  • 运算过程
  for (int i = 0 ; i<a.length - 1 ; i++)也是进行了5次排序
        for (int j = i+1; j < a.length; j++)  这里进行了5 - i+1 次排序
        过程 循环第112 > 5   5   12
            循环第25  > 6   5   6
            循环第35  > 45  5  45
            循环第45  > 2   2   5
            循环第52  > 3   2   3
            out:21264553
            每次的过程就是直接选出  最小的  一个放最前面
            下一次,就是从 12开始比较了 ,效率比冒泡高 
  • 如何获取数组中最小的元素
1.
import java.util.stream.IntStream;

public class SmallestIntegerFinder {
    public static int findSmallestInt(int[] args) {
        return IntStream.of(args).min().getAsInt();
    }
}

2.
import java.util.Arrays;
public class SmallestIntegerFinder {
    public static int findSmallestInt(int[] args) {
        Arrays.sort(args);
        return args[0];
    }
}

3.
 public static int findSmallestInt(int[] args) {
        int smallest = Integer.MAX_VALUE;
        for (int i : args)
          smallest = (smallest>i) ? i : smallest;
        return smallest;
    }

4.
 public static int findSmallestInt(int[] args) {
      int min = args[0];

       for(int i = 1; i < args.length; i++){
         if(min > args[i]) min = args[i];
       }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值