首页 > 编程语言 >Java基本查找,二分查找,选择排序

Java基本查找,二分查找,选择排序

时间:2023-06-13 20:44:47浏览次数:44  
标签:二分 arr Java Scanner int System 查找 public

一、基本查找

package com.itheima.d8_sort_binarysearch;
/**
 *基本查找
 */
import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        //1、定义一个数组(基本查找)
        int[] arr = {12,95,1,3,76,4,2,93,56,49,67};
        search(arr);
    }
    
    public static void search(int[] arr){
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        //2、开始查找
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == input){
                System.out.println("索引:"+ i);
            }
        }
    }
}

二、选择排序

 

package com.itheima.d8_sort_binarysearch;

import java.util.Arrays;

/**
 * 目标:学会使用选择排序的方法对数组进行排序
 */
public class Test1 {
    public static void main(String[] args) {
        //1、定义数组
        int[] arr = {5 ,1 ,2 ,3};
        //           0  1  2  3
        //2、定义一个循环控制选择几轮: arr.length() - 1
        for (int i = 0; i < arr.length - 1; i++) {
            // i = 0, j = 1 2 3
            //i = 1, j  = 2 , 3
            //i = 2, j = 3
            //3、定义内部循环,控制选择几次
            for (int j =  i + 1; j < arr.length; j++) {
                // 当前位:arr[i]
                // 如果有比当前位数据更小的,则交换
                if(arr[i] > arr[j]){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

三、二分查找

package com.itheima.d8_sort_binarysearch;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        int[] arr = {1,12,23,34,45,56,79,97};
        Scanner scanner = new Scanner(System.in);
        int data = scanner.nextInt();
        System.out.println(binarySearch(arr, data));
    }
    
    public static int binarySearch(int[] arr , int data){
        //1、定义左边位置 和 右边位置
        int left = 0;
        int right = arr.length - 1;

        //2、开始循环,折半查询
        while(left <= right){
        //取中间索引
            int middleIndex = (left + right ) / 2;
            //3、判断当前中间位置的元素和要找的元素的大小情况
            if(data > arr[middleIndex]){
                // 往右边找,左边更新 = 中间索引 + 1
                left = middleIndex + 1;
            }else if(data < arr[middleIndex]){
                //往左边找,右边更新为 = 中间位置 - 1
                right = middleIndex - 1;
            }else {
                return middleIndex;
            }
        }
        return -1;//查无此元素。
    }
}

 

标签:二分,arr,Java,Scanner,int,System,查找,public
From: https://www.cnblogs.com/liandaozhanshi/p/17478683.html

相关文章

  • Java面试笔记202306
    Java基础ArrayListArrayList底层数据是动态数组,初始长度为10,每次扩容为原来的1.5倍。扩容流程:首先会创建一个新的长度的数组,然后使用Arrays.copyOf()方法将旧的数组中的元素复制到新的数组中,最后会将新插入的数据插入到新的数组中。IO和NIO的区别io指的是io流。可以实现数......
  • Java反序列化之Commons-Collection篇05-CC2链
    <1>环境分析jdk:jdk8u65CC:Commons-Collections4.0pom.xml添加<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.0</version></dependency&g......
  • javascript:eval()的用法
    eval()是JavaScript中的一个全局函数,它可以计算或执行参数。如果参数是表达式,则eval()计算表达式;如果参数是一个或多个JavaScript语句,则eval()执行这些语句。以下是一些常见的用法:-计算表达式的值:`varresult=eval("3+5");`-执行JavaScript代码字符串:`varcode......
  • Java9新特性
    在介绍java9之前,我们先来看看java成立到现在的所有版本。  1990年初,最初被命名为Oak;  1995年5月23日,Java语言诞生;  1996年1月,第一个JDK-JDK1.0诞生;  1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术;  1996年9月,约8.3万个网页应用了Jav......
  • Java9比Java8改进了什么
    1)引入了模块系统,采用模块化系统的应用程序只需要这些应用程序所需的那部分JDK模块,而非是整个JDK框架了,减少了内存的开销。2)引入了一个新的package:java.net.http,里面提供了对Http访问很好的支持,不仅支持Http1.1而且还支持HTTP2。3)引入了jshell这个交互性工具,让Java也可以像脚本......
  • JAVA8 十大新特性详解
    一、接口的默认方法Java8允许我们给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做扩展方法,示例如下:代码如下:interfaceFormula{   doublecalculate(inta);    defaultdoublesqrt(inta){       returnMath.sqrt(a); ......
  • JavaScript Array 对象参考手册 splice() 方法
    JavaScriptsplice()方法返回JavaScriptArray对象参考手册(目录)定义和用法splice()方法用于插入、删除或替换数组的元素。语法arrayObject.splice(index,howmany,element1,.....,elementX) 参数描述index必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组......
  • JavaScript Array 对象参考手册 reverse() 方法
    JavaScriptreverse()方法返回JavaScriptArray对象参考手册(目录)定义和用法reverse()方法用于颠倒数组中元素的顺序。语法arrayObject.reverse() 提示和注释注释:该方法会改变原来的数组,而不会创建新的数组。实例在本例中,我们将创建一个数组,然后颠倒其元素的顺序:<scr......
  • Java使用for嵌套循环打印九九乘法表
    第一步:构思观看九九乘法表,并使用计算机思维发现其规律。(1)首先,我们需要知道Java的输出可以控制里面的结果在不在一行,所以我们需要观察行与行之间的规律。我们可以把乘法看成b×a=c(2)然后,我们看第二行可以发现“a=2”而且“a=2”在第二行没有变,而“b”在发生变化。并且看第......
  • java包装
    一.枚举1.枚举产生的原因场景:定义属性的同时如果出现不合逻辑的类型,则需要用枚举类型替代2.创建枚举枚举的关键字:enum枚举实战:这里的sex的类型是枚举类型的名称publicenumXinbie{MALE,FEMAL}privateXinbiesex;调用Xinbie里的属性把sex进行封装;main方法==》实例化对象......