(尚硅谷java零基础教程)学习笔记day9-每日一考

1、使用冒泡排序,实现如下的数组从小到大排序。
int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};

注:

  1. 冒泡排序时间复杂度: o ( n 2 ) o(n^2) o(n2)
  2. 快速排序时间复杂度: o ( n l o g 2 n ) o(nlog_2n) o(nlog2n)
  3. 还需要知道堆排序和归并排序的思路。

2、如何反转上面的数组。请代码实现
3、复制上面数组,得到一个新的数组
4、使用线性查找,从上述数组中查找22是否存在。存在,返回所在位置的索引。不存在,输出提示信息。

注:

  1. 一般查找均返回的首个匹配元素值的位置。

程序:

package com.atguigu.test;

import java.util.Arrays;

/*
 * 1、使用冒泡排序,实现如下的数组从小到大排序。
 * int[] arr = new int[]{34,5,22,-98,6,-76,0,-3};
 * 
 * 2、如何反转上面的数组。请代码实现,见EverydayTest1
 * 
 * 3、复制上面数组,得到一个新的数组
 * 
 * 4、使用线性查找,从上述数组中查找22是否存在。存在,返回所在位置的索引。不存在,输出提示信息。
 */
public class EverydayTest {
	public static void main(String[] args) {
		int[] arr = new int[] { 34, 5, 22, -98, 6, -76, 0, -3 };
		//每日一考1
		System.out.println("排序前:" + Arrays.toString(arr));
		bubbleSort(arr);
		System.out.println("排序后:" + Arrays.toString(arr));
		
		//每日一考2
		System.out.println("\n反转前:" + Arrays.toString(arr));
		arrReverse(arr);
		System.out.println("反转后:" + Arrays.toString(arr));
		
		//每日一考3
		int[] arr1 = arrCopy(arr);
		System.out.println("\narr:" + Arrays.toString(arr));
		System.out.println("arr1:" + Arrays.toString(arr1));
		
		//每日一考4
		linSearch(arr,22);
	}
	
	//创建于一个用于交换的方法
	public static void swap(int[] data,int i,int j){
		int temp = data[i];
		data[i] = data[j];
		data[j] = temp;
	}
	
	// 创建一个冒泡排序的方法
	public static void bubbleSort(int[] data) {
		boolean flag = true;
		
		for(int i = 0;i < data.length - 1;i++){	
			for(int j = 1;j < data.length - i;j++){//这里j应该要取到data.length-1
				if (data[j] < data[j-1]){
					swap(data,j,j-1);
					flag = false;
				}
				
				//如果一趟比较下来,没有实行交换,则结束循环
				if(flag){
					break;
				}
			}
		}
	}
	
	//创建一个实现数组反转的方法
	public static void arrReverse(int[] data){
		for(int i = 0;i < data.length/2;i++){
			swap(data,i,data.length - 1 - i);
		}
	}
	
	//创建一个实现数组复制的方法
	public static int[] arrCopy(int[] data){
		int[] arr = new int[data.length];
		for (int i = 0;i < data.length;i++){
			arr[i] = data[i];
		}
		return arr;
	}
	
	//创建一个线性查找的方法
	public static int linSearch(int[] arr,int data){
		int index = -1;
		boolean flag = false;
		for(int i = 0;i < arr.length;i++){
			if (arr[i] == data){
				index = i;
				System.out.println("元素" + data +"在数组的位置为:" + i);
				flag = true;
			}
		}
		if(!flag){
			System.out.println("未找到指定元素!");
		}
		return index;
	}
}

输出结果:

排序前:[34, 5, 22, -98, 6, -76, 0, -3]
排序后:[-98, -76, -3, 0, 5, 6, 22, 34]

反转前:[-98, -76, -3, 0, 5, 6, 22, 34]
反转后:[34, 22, 6, 5, 0, -3, -76, -98]

arr:[34, 22, 6, 5, 0, -3, -76, -98]
arr1:[34, 22, 6, 5, 0, -3, -76, -98]
元素22在数组的位置为:1

5、数组中常见的异常有哪些?请举例说明
(1)空指针异常(NullPointerException):
举例子:

int[] arr = null;
System.out.println(arr[0]);

(2)数组角标越界异常(ArrayIndexOutOfBoundsException):合理的范围 [0,arr.length-1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值