k

kenma

V1

2022/09/07阅读:14主题:默认主题

排序

内部排序

指将需要处理的所有数据都加载到内部存储中进行排序。包括(交换式排序法、选择式排序法和插入式排序法);

外部排序法

数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。

冒泡排序法

通过对待序列从后往前,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下一样逐渐往上冒。

int[] arr = {24, 69, 80, 57, 13, -1, 30, 200, -110};
int temp = 0; //用于辅助交换的变量
//将多轮排序使用外层循环包括起来即可
//先死后活 =》 4 就是 arr.length - 1
for( int i = 0; i < arr.length - 1; i++) {//外层循环是 4 次
    for( int j = 0; j < arr.length - 1 - i; j++) {
    //4次比较-3次-2次-1次
    //如果前面的数>后面的数,就交换
      if(arr[j] > arr[j + 1]) {
          temp = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = temp;
        }
          }
      System.out.println("\n==第"+(i+1)+"轮==");
        for(int j = 0; j < arr.length; j++) {
              System.out.print(arr[j] + "\t");

查找

顺序查找

    /*
     有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王猜数游戏:
     从键盘中任意输入一个名称,判断数列中是否包含此名称【顺序查找】
     要求: 如果找到了,就提示找到,并给出下标值
     思路分析
     1. 定义一个字符串数组
     2. 接收用户输入, 遍历数组,逐一比较,如果有,则提示信息,并退出
      */
    String[] names = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"};
    Scanner myScanner = new Scanner(System.in);
    System.out.println("请输入名字");
    String findName = myScanner.next();
    //遍历数组,逐一比较,如果有,则提示信息,并退出
    //这里老师给大家一个编程思想/技巧, 一个经典的方法
            int index = -1;
            for(int i = 0; i < names.length; i++) {
    //比较 字符串比较 equals, 如果要找到名字就是当前元素
                if(findName.equals(names[i])) {
                    System.out.println("恭喜你找到 " + findName);
                    System.out.println("下标为= " + i);
    //把 i 保存到 index
                    index = i;
            break;//退出
        }
    }
    if(index == -1) { //没有找到
        System.out.println("sorry ,没有找到 " + findName);
    }

二分查找(算法练)

分类:

后端

标签:

Java

作者介绍

k
kenma
V1