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【】下标范围;