ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-07-15 罗佳明 第八小组 学习笔记

2022-07-15 23:36:44  阅读:111  来源: 互联网

标签:arr 15 07 int System 罗佳明 println new out


一、重点

 

 

 

 

 

二、学习内容

线性查找:

package com.jsoft.moring;

import java.util.Scanner;

/*
 数据结构
          1、数组是最基本的数据结构,是一张表,线性表(数据元素之间是一对一关系)
               除了第一个和最后一个之外其余的元素都是首尾连接
          2、链表
          3、树
          4、图 深度优先遍历 广度优先遍历
  */
public class Ch01 {
    public static void main(String[] args) {
        /*
            找出一个数在数组中的位置
            在数组中是否存在,返回下标,如果不存在,返回-1


            如果找到了,则把下标i保存起来,显示你要找的数是***,在目标数组的下标是***
            如果没找到,则显示你要找的数是***,在目标数组中是不存在的
         */
        //线性查找
        int[] arr = new int[]{1, 24, 45, 3, 67, 54, 52, 72, 8, 3};
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num = sc.nextInt();
 //       boolean flag = false;
        int index = -1;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == num) {
                //flag = true;
                index = i;
                break;
            }
        }
            if (index!=-1) {
                System.out.println("你要找的数是" + num + "在目标数组的下标是" );
            } else {
                System.out.println("你要找的数是" + num + "在目标数组中是不存在的");
            }


        }
    }

 

 

二分法查找:

packagecom.jsoft.moring;

importjava.util.Scanner;

//二分法查找
publicclassCh02{
publicstaticvoidmain(String[]args){
int[]arr=newint[]{1,2,3,4,5,6,7};
Scannersc=newScanner(System.in);
System.out.println("请输入要查找的数字");
inttaget=sc.nextInt();
//最左边的下标
intleft=0;
//最右边的下标
intright=arr.length-1;
if(taget<arr[left]||taget>arr[right]){
System.out.println(taget+"在目标数组中不存在");
}else{
//用来保存找到的下标的值
intres=-1;
while(left<=right){
//找出中间位置
intmiddle=(left+right)/2;
if(arr[middle]==taget){
//中间的数恰巧就是我们要找的数
res=middle;
//left=arr.length-1;
break;
}elseif(arr[middle]>taget){
//要找的数在数组的前半区
//如果在前半区维护left和rightleft是不需要动的right应该移位到中间位置
right=middle-1;
}else{
//条件实际上就是arr[middle]<target
/*说明在后半区
right是不需要动的
left应该向右移动到中间位置
*/
left=middle+1;
}

}
System.out.println(taget+"在目标数组的下标是"+res);
}
}
}

 

选择排序:

packagecom.jsoft.afternooon;

publicclassCh01{
publicstaticvoidmain(String[]args){
int[]arr=newint[]{1,25,48,12,10,-8,127,56};
for(inti=0;i<arr.length;i++){
//假设arr[0]最小的
//假设最小的数下标
intminIndex=i;
for(intj=i;j<arr.length;j++){
if(arr[minIndex]>arr[j]){//找到了最小值
minIndex=j;//保存最小值的下标
}
}
inttemp=arr[minIndex];
arr[minIndex]=arr[i];
arr[i]=temp;
}
for(inti:arr){
System.out.print(i+"");
}

}
}

插入排序:

package com.jsoft.afternooon;

public class Ch02 {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 25, 48, 12, 10, -8, 127, 56};
        //定义参照物current
        int current;
        for (int i = 0; i < arr.length-1; i++) {
            current =arr[i+1];
            //定义上一个元素的下标
            int preIndex = i;
            //当上一个数的下标有效不能小于0
            //并且还要保证当前数比他上一个数小
            //这时候,才能让当前数向前移位
            while (preIndex>=0&&current <arr[preIndex]){
                //移位
                //前面的数后移一位
                arr[preIndex+1]=arr[preIndex];
                //
                preIndex--;
            }
            arr[preIndex+1]=current;
        }
        for (int i : arr) {
            System.out.print(i+" ");
        }
    }
}

数组的反转:

思路一:

    package com.jsoft.afternooon;
    
    public class Ch03 {
        public static void main(String[] args) {
            int[] arr = new int[]{1, 25, 48, 12, 10, -8, 127, 56};
            int [] newArr = new int[arr.length];
            for (int i = arr.length-1; i >=0 ; i--) {
                newArr[i] = arr[arr.length-1-i];
    
            }
            for (int i : arr) {
                System.out.print(i+" ");
            }
        }
    }

思路二:

    //利用交换方式:推荐使用
    int[] arr = new int[]{1, 25, 48, 12, 10, -8, 127, 56};
            int [] newArr = new int[arr.length];
            for (int i = 0; i <arr.length/2 ; i++) {
                //temp存储的最后一位
                int temp = arr[arr.length-1-i];
                arr[arr.length-1-i]=arr[i];
                arr[i]=temp;
            }
            for (int i : arr) {
                System.out.print(i+" ");
            }

 

数组的扩容

package com.jsoft.afternooon;

import java.util.Arrays;

public class Ch04 {
    public static void main(String[] args) {
        int [] nums = new int[] {3,4,6};
        //定义一个新的临时数组
        int [] temp = new int[6];
        for (int i = 0; i < nums.length; i++) {
            temp[i]=nums[i];
        }
        nums=temp;
        System.out.println(Arrays.toString(nums));
    }
}

 员工管理系统

package com.jsoft.afternooon;

import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("欢迎使用员工管理系统:");

        int[] nos = new int[2];             //员工工号
        String[] names = new String[2];     //员工姓名
        int empNo = 1000;                   //员工工号
        int empCount = 0;                   //员工数


        while (true) {
            System.out.println("请选择功能:1、添加员工 2、查询员工 3、修改员工 4、删除员工");
            int flag = sc.nextInt();
            switch (flag) {
                case 1:

                    System.out.println("情输入姓名:");
                    String name = sc.next();
                    //数组扩容
                    if (empCount >= nos.length) {
                        int[] new_nos = new int[nos.length + 2];
                        String[] new_names = new String[names.length + 2];
                        for (int i = 0; i < nos.length; i++) {
                            new_nos[i] = nos[i];
                            new_names[i] = names[i];
                        }
                        nos = new_nos;
                        names = new_names;
                    }
                    //添加员工
                    empNo++;    //1001
                    nos[empCount] = empNo;
                    names[empCount] = name;
                    empCount++; //1
                    System.out.println("添加成功!");
                    //Test
                    System.out.println(Arrays.toString(nos));
                    System.out.println(Arrays.toString(names));

                    System.out.println("请输入");
                    break;
                case 2:
                    boolean isFind = false;
                    System.out.println("请输入一个员工编号:");
                    int search = sc.nextInt();
                    for (int i = 0; i < nos.length; i++) {
                        if (search == nos[i]) {
                            System.out.println("员工的工号:" + nos[i] + "\t员工的姓名:" + names[i]);
                            isFind = true;
                            break;
                        }

                    }
                    if (!isFind) {
                        System.out.println("查找不到");
                    }

                    /**/
                    break;
                case 3:
                    boolean isFind1 = false;
                    System.out.println("请输入一个员工编号:");
                    int empNo1 = sc.nextInt();
                    for (int i = 0; i < nos.length; i++) {
                        if (empNo1 == nos[i]) {    //找到员工了
                            System.out.println("请输入新名字:");
                            String name1 = sc.next();
                            names[i] = name1;
                            System.out.println("替换成功");
                            //    System.out.println("新员工的工号:"+nos[i]+"\t员工的姓名:"+names[i]);
                            isFind1 = true;
                            break;
                        }

                    }
                    if (!isFind1) {
                        System.out.println("查找不到");
                    }
                    break;
                case 4:
                    boolean isFind2 = false;
                    System.out.println("请输入一个员工编号:");
                    int empNo2 = sc.nextInt();
                    for (int i = 0; i < nos.length; i++) {
                        if (empNo2 == nos[i]) {    //找到员工了
                            //位移
                            for (int j = i; j <= nos.length-1; j++) {
                                if(i == nos.length-1) {
                                    String name2 = sc.next();
                                   nos[nos.length-1]=0;
                                    names[nos.length-1]=null;

                                }else {
                                    nos[i] = nos[i + 1];
                                    //    System.out.println("新员工的工号:"+nos[i]+"\t员工的姓名:"+names[i]);
                                }
                            }
                            isFind2 = true;//标记
                            break;
                        }
                        break;
                    }
            }
        }
    }
}

 

三、学习心情

 

标签:arr,15,07,int,System,罗佳明,println,new,out
来源: https://www.cnblogs.com/ljmskipper/p/16482368.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有