韩顺平零基础学JAVA170-180集学习笔记

JAVA20231208

171排序

排序的介绍:

排序是将多个数据,依指定的顺序进行排列的过程

排序的分类:

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

  2. 外部排序:

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

172173冒泡排序法:

冒泡排序基本思想:通过对待排序序列从后往前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。

实例分析:

public class BubbleSore{
	public static void main(String[] args){
		//需求分析:
		//对数组24、69、80、57、13实现冒泡排序
		//
		//思路分析:
		//创建一个数组 int []arr
		//两个for循环实现 从小往大排 arr[i] > arr[i+1] 交换
		//
		//代码实现:
		int []arr = {24,69,80,57,13};
		for(int i = 0;i < arr.length-1;i++){
			for(int j =0;j < arr.length-1-i;j++){
				if(arr[j] > arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;//冒泡排序完成
				}
			}
		}
		System.out.print("冒泡排序(从小到大)后遍历输出:");
		for(int k = 0;k < arr.length;++k){//遍历输出排序后的数组
			System.out.print(arr[k] + "\t");
		}
	}
}
//
//冒泡排序思路:
//假设从小往大排
//在一个数组中外层for循环条件一共要进行(arr.length-1)次:
//以实例数组[24,69,80,57,13]分析
//外层循环第一次目的是将数值最大元素(80)放在数组的最大下标(最后一位)
//		 第二次目的是将数值第二大元素(69)放在数组的第二大下标(倒数第二位)
//		 第三次目的是将数值第三大元素(57)放在数组的第三大下标(倒数第三位)
//		 第四次目的是将数值第四大元素(24)放在数组的第四大下标(倒数第四位)
//		 13为最小的一个数其他元素放置好之后他自己就会位于首位 无需再进行一次循环
//内层循环第一次中需五个数依次两两比较共比较四次
//		 第二次中需四个数依次两两比较共比较三次
//		 第三次中需三个数依次两两比较共比较两次
//		 第四次中需两个数依次两两比价共比较一次   则内层for循环条件应为 arr.length-1-i(i为外层循环变量,初始值为0)

174查找:

介绍:在java中常用的查找有两种:

  1. 顺序查找 SepSearch.java
  2. 二分查找 (算法讲解)

案例分析:

import java.util.Scanner;
public class SepSearch{
	public static void main(String[] args){
		//需求分析:
		//有一个数列:白眉鹰王,金毛狮王,紫衫龙王、青翼蝠王猜数游戏:
		//从键盘中任意输入一个名称,判断数列中是否包含此名称
		//要求:如果找到了,就提示找到,并给出下标值
		//
		//思路分析:
		//Scanner 键盘输入提示语
		//new一个String数组 for遍历  if判断 int index 接受下标值
		//
		//代码实现:
		Scanner myScanner = new Scanner(System.in);
		int index = -1;
		String [ ]arr = {"白眉鹰王","金毛狮王","紫衫龙王","青翼蝠王"};
		System.out.print("请输入要找的王:");
		String name = myScanner.next();
		for(int i = 0; i < arr.length;++i){
			if(arr[i].equals(name)){
				index = i;
				System.out.print("\n已找到:" + name +"\t其下标值为:" + index);
				break;
			}
		}
		if(index == -1){
			System.out.print("\n对不起没有找到:" + name);
		}
	}
}

175多维数组-二维数组

快速入门:

import java.util.Scanner;
public class TwoDimensionalArry01{
	public static void main(String[] args){
		//需求分析:
		//请用二维数组输出如下图形
		/*	0 0 0 0 0 0
			0 0 1 0 0 0
			0 2 0 3 0 0
			0 0 0 0 0 0
		*/
		//思路分析:
		//new一个二维数组
		//使用两个for循环实现 导入Scanner实现键盘输入
		//使用两个for循环遍历输出
		//
		//代码实现:
		Scanner myScanner = new Scanner(System.in);
		int [ ][ ]arr = new int[4][6];
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j < arr[i].length;++j){
				System.out.print("请输入第"+ (i+1) +"行的第"+(j+1)+"个值:");
				arr [i][j] = myScanner.nextInt();
			}	
		}
		System.out.println("\n=======输出二维数组=======");
		for(int m = 0;m < arr.length;m++){
			for(int n = 0;n < arr[m].length;n++){
				System.out.print(arr[m][n] + "\t");
			}
			System.out.println();
		}
	}	
}
176177178179二维数组的使用

使用方式1:动态初始化

  1. 语法:类型[ ] [ ] 数组名 = new 类型[大小] [大小]
    比如:int a [ ] [ ] = new int [2] [3]
  2. 二维数组在内存的存在形式(图)
    请添加图片描述

使用方式2:动态初始化

  1. 先声明:类型 数组名[ ] [ ];
  2. 再定义(开辟空间):数组名 = new 类型 [大小] [大小]
  3. 赋值(有默认值,比如int类型的就是0)

使用方式3:动态舒适化-列数不确定
请添加图片描述

public class TwoDimensionalArray03 {
    //编写一个 main 方法
	public static void main(String[] args) {
	/*
    看一个需求:动态创建下面二维数组,并输出
    i = 0: 1
    i = 1: 2 2
    i = 2: 3 3 3 一个有三个一维数组, 每个一维数组的元素是不一样的
    */
    //创建 二维数组,一个有 3 个一维数组,但是每个一维数组还没有开数据空间
    int[][] arr = new int[3][];
    for(int i = 0; i < arr.length; i++) {//遍历 arr 每个一维数组
    //给每个一维数组开空间 new
    //如果没有给一维数组 new ,那么 arr[i]就是 null
    arr[i] = new int[i + 1];
    //遍历一维数组,并给一维数组的每个元素赋值
    for(int j = 0; j < arr[i].length; j++) {
        arr[i][j] = i + 1;//赋值
    }
    }
    System.out.println("=====arr 元素=====");
    //遍历 arr 输出
    for(int i = 0; i < arr.length; i++) {
    //输出 arr 的每个一维数组
    for(int j = 0; j < arr[i].length; j++) {
    System.out.print(arr[i][j] + " ");
    }
    System.out.println();//换行
    }
    }
    }

使用方法4:静态初始化
定义 : 类型 数组名[ ] [ ] = {{值1,值2…},{值1,值2…},{值3,值4…}}

比如:int [ ] [ ] arr = {{1,1,1},{8,8,9},{100}};

180二维数组的遍历

案例:

public class TwoDimensionalArry02{
	public static void main(String[] args){
		//需求分析:
		//int arr [][] = {{4,6},{1,4,5,7},{-2}};遍历该二维数组,并得到和
		//思路分析:
		//new arr for遍历数组 int sum接收和
		//代码实现:
		int [][]arr = {{4,6},{1,4,5,7},{-2}};
		int sum = 0;
		for(int i = 0;i < arr.length;i++){
			for(int j = 0;j < arr[i].length;j++){
				sum += arr[i][j];
			}
		}
		System.out.print("二维数组的总和为:" + sum);
	}
}
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值