前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >冒泡法以及数组的查找

冒泡法以及数组的查找

作者头像
zxmttkx
发布2022-12-02 11:59:36
5040
发布2022-12-02 11:59:36
举报
文章被收录于专栏:java基础学习java基础学习

一、数组排序(冒泡法)

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

冒泡排序法:通过比较两个相邻的数的大小(如果前面的数大于后面的数就进行交换 / 后面的数大于前面的数就进行交换 ),来进行一个数组的排序,使整个数组中的数据按  从小到大/从大到小  的顺序进行排序。

案例:

将五个无序的数:24,69,80,57,13 使用冒泡排序法将其排成一个从小到大的有序数列。

运行目标:

数组[24,69,80,57,13]

第一轮循环:目标是把最大的数放到数组最后位置

第1次比较 [24,69,80,57,13]

第2次比较 [24,69,80,57,13]

第3次比较 [24,69,57,80,13]

第4次比较 [24,69,57,13,80]

第二轮循环:目标是把第二大的数放到数组倒数第二位置

第1次比较 [24,69,57,13,80]

第2次比较 [24,57,69,13,80]

第3次比较 [24,57,13,69,80]

第三轮循环:目标是把第三大的数放到数组倒数第三位置

第1次比较 [24,57,13,69,80]

第2次比较 [24,13,57,69,80]

第四轮循环:目标是把第三大的数放到数组倒数第四位置

第1次比较 [13,24,57,69,80]

执行代码:

代码语言:javascript
复制
public class BubbleSort {
	public static void main(String[] args) {
		
		int[] arr = {24 , 69 , 80 , 57 , 13};
		int temp; //用于辅助变量交换
 
		// 先死后活 => 4就是 arr.length - 1
		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]) {
				temp = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = temp;
				}
			}
			System.out.println("\n ===第" + (i + 1) + "轮");
			for(int j = 0; j < arr.length ; j++) {
				System.out.print(arr[j] + "\t");
			}
		}
	}
}

运行结果:

分析:

1)一共有五个元素,进行了四轮循环

2)每一轮的循环都可以确定一个数的位置,比如第一轮循环确定了最大的一个数,第二轮循环确定了第二大的数……

3)当进行比较时,只要前面的数大于后面的数就进行交换

4)每轮的比较次数在减少,4 => 3 => 2 => 1,因为每轮都会确定一个数的位置

二、数组查找

(1)查找分类

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

1)顺序查找

2)二分查找

(2)顺序查找

案例:

有一个数列:{"java" , "python" , "golang"}; 从键盘输入一组字符串 判断数列中是否包含此字符串(顺序查找) 要求:如果找到了,就提示找到,并给出下标值 ; 没找到就给出提示

思路: 1. 定义一个字符串数组 2. 接收用户输入,遍历数组,逐一比较,如果有,则提示信息,并退出

直接上代码:

代码语言:javascript
复制
import java.util.Scanner;
public class SeqSearch {
	public static void main(String[] args) {
		
		//定义一个字符串数组
		String[] names = {"java" , "python" , "golang"};
		Scanner myScanner = new Scanner(System.in);
 
		System.out.println("请输入字符串:");
		String findName = myScanner.next();
 
		//遍历数组,逐一比较,如果有则提示信息并退出
		//判断有没有成功可以用一个 索引/标识符/标记 等
		int index = -1; //不能为 i - names.equals 间的数
		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);
		}
	}
}

输出结果为:

 可以看出在找到字符串后便会提示找到并且输出该字符串的下标。

未找到便会提示 sorry,没有找到。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数组排序(冒泡法)
    • 运行目标:
    • 二、数组查找
      • (1)查找分类
        • (2)顺序查找
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档