java笔记 ,冒泡与选择排序及数组越界

class FunctionDemo
{	
	
	public static void main(String[] args) 
	{
		int[] arrYs = {3,6,4,5,7,9};
		for(int a =0;a<arrYs.length;a++){
			System.out.print(arrYs[a]+"\t");
		}
		maopaopaixu(arrYs);
		for(int a =0;a<arrYs.length;a++){
			System.out.print(arrYs[a]+"\t");
		}
		xuanzepaixu(arrYs);
		for(int a =0;a<arrYs.length;a++){
			System.out.print(arrYs[a]+"\t");
			
		}
		
		
	}
	//定义一个函数,
	// 1 明确函数需求,要返回什么类型的结果.只有一个结果,不要有多的结果或者功能
	// 2 功能实现是否有位置内容参与运算;

	/*
	需求,判断两个数的值是否一样
	思路:
	1 明确结束时两个数是否一样,返回一个Boolean值
	2 是否有未知数参与,有,俩个int 数据
	
	
	public static boolean panduan(int x, int y)
	{
	
		//if (x == y)
			//return true;
		
		//else
			//return false;
		
		 return (x==y)?true:false;
		
	}
	*/

	//冒泡排序
	//需求,将一个数组从小到大排序
	//思路 1 返回结果,一个数组
	//     2 未知参数一个数组
	public static int[] maopaopaixu(int[] arr)
	{
		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;
				}
			
			}
		}
		return arr ;
	}	

//冒泡排序,每次循环,交换,交换的是两个下标相邻的数;
//选择排序,每次循环,交换,一个不变的下标,与一个自增的下标交换;
//选择排序
	public static int[] xuanzepaixu(int[] arr)
	{
		for (int i= 0;i<arr.length-1;i++ )//遍历第i个数
		{
			for(int j=i+1; j<arr.length;j++)//让第i数与i+1比较,保证i最大或者最小
			{
				if(arr[i]<arr[j]){  //找出一个最大数放在数组最前面
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			
			}
		}
		return arr ;
	}	
}

这次发现错误 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException数组越界,是因为在选择排序时,arr【j】错误写成arr【j+1】,致第一次循环下标j+1超出arr【】下标范围;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值