常见排序算法

一、排序算法

1、冒泡排序

每次把相邻两个数进行比较 ,一轮下路能够把一个最大值放到最后 长度为n 则需要比较n-1

代码实现

for(int i=0; i<arr.length-1; i++){    //需要比较  n-1轮
    for(int j=0; j<arr.length-1-i; j++){ //每次都是相邻两个比较
        if(arr[j]>arr[j-1]){
            int temp = arr[j+1];
            arr[j+1] = arr[j];
            arr[j] = temp;
        }
    }
}

二、查找算法

1、折半查找

折半查找前提是有序, 通过把要查找的值与中间值对比 大就去中间值右边开始找 ,如果小于则去中间值左边去查找

代码实现

public class MidSearch {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int [] num = {1,5,6,7,8,11,15,18};
        System.out.print("请输入你要查找的数:");
        int target = scanner.nextInt();
        int right = num.length-1;   //右边界
        int left = 0;               //左边界
        int index=0;
        //可以提前判断一下
        if( target <num[0] || target > num[num.length-1]){
            System.out.println("你要查找的数不在范围之内");
        }else{
            while(left <=right){
                index = -1;   //没有找到就返回  -1
                int mid = (right +left)/2;
                if(target <num[mid]){
                    right = mid-1;
                }else if(target >num[mid]){
                    left = mid+1;
                }else{
                    index = mid ;
                    break;
                }
            }
            if(index >-1){
                System.out.println("找到了,下标为:"+index);
            }else{
                System.out.println("没有你要找的数");
            }
        }
    }
}

三、二维数组

所谓二维数组,就是数组里头放数组 因为数组中数据类型可以是基本数据类型 也可以是引用数据类型

八种基本数据类型:short 、int、double、float、long、char、boolean、String

引用数据类型:数组、对象引用数据类型值就只有两种 要么为null,要么是内存地址

1、杨辉三角

代码实现

public class YangHui {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要打印的行数:");
        int n  = scanner.nextInt();
        int [][] arr = new int [n][n];

        for(int i=0; i<arr.length;i++){
            //这里其实可以使用  arr.length  因为是等大的
            for(int j=0;j<arr[i].length;j++){
                if(i==0 || i==j || j==0){
                    arr[i][j] = 1;
                }else{
                    arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
                }
            }
        }
        for (int i=0; i<arr.length; i++){
            for(int j=0;j<=i; j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值