排序,冒泡排序,选择排序,插入排序

简单记录三种排序方法


public class Sorts{

    public static int[] bubbleSort(int[] input){//冒泡排序
        int temp;
        boolean flag;//用于标记是否已经排好
        
          for(int i=0; i< input.length;i++){//一共走了length-1次
            flag=false;//每一轮交换开始都生命现在没有开始排
            for(int k=input.length-1;k>i;k--){//k-1是数组最后一个往回遍历交换
              if(input[k]<input[k-1]){
                temp=input[k-1];
                input[k-1]=input[k];
                input[k]=temp;
                flag=true;//如果在一趟排序中发生交换证明这一轮还是发生了排序,没有排好
              }
            }

            if(!flag){break;}//如果一轮排序中没有发生交换证明已经排好
        }//bubblesort的排序方法是保证每次确定把minimum value推到最前面(合适的位置)
        //时间复杂度(O(n2))

        return input;
    }

    public static int[] selectSort(int[] input){//选择排序
        int miniIndex=0;//初始化最小的是数组第一位
        int temp;
        for(int i=0;i<input.length;i++){//遍历input.length轮
            miniIndex=i;//设置最小值是当前遍历的起点
            for(int k=i;k<input.length;k++){
                if(input[k]<input[miniIndex]){
                    miniIndex=k;//如果遍历到更小的更新最小值index
                }
            }
            temp= input[i];
            input[i]=input[miniIndex];
            input[miniIndex]=temp;//一轮之后交换当前最小值和遍历的起点
            
        }
       
        return input;
    }//时间复杂度(O(n2))

    public static int[] insertSort(int[] input){//插入排序
        int temp;
        for(int i=0;i<input.length-1;i++){//遍历到倒数第二个,最后一个用于插入
            for(int k=i+1;k>0;k--){//遍历到第二位
                if(input[k]<input[k-1]){//如果第二位大于前面的交换,交换部分相当于bubblesort
                    temp=input[k];
                    input[k]=input[k-1];
                    input[k-1]=temp;
                }
            }
        }
        return input;
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值