package cn.itcast;
/*
* 数组的选择排序
* 原理:如果拿0角标上的元素依次和后面的元素进行比较,
* 第一次内循环结束后,最小值出现在了0角标位置。
*
*/
public class ArrayDemo4 {
// 遍历数组进行排序
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {//i的0角标和j的1角标比较
if (arr[i] > arr[j]) {
int temp = arr[i];// 先把大的数记录下来进行后期比较
arr[i] = arr[j];// 把小的值j给i,然后再用小的值和其他值再比较
arr[j] = temp;// 换位置
}
}
}
}
//主函数
public static void main(String[] args) {
// 定义一个数组
int[] arr = new int[] { 2, 4, 6, 8, 10 };
// 排序前
//System.out.println("排序前:" + arr);
printArray(arr);
//排序
selectSort(arr);
//排序后
//System.out.println("排序后:"+ arr);
printArray(arr);
}
//创建遍历数组的功能,方便主函数调用
public static void printArray(int[] arr){
System.out.print("[");
for(int k=0;k<arr.length;k++){
if(k!=arr.length-1){
System.out.print(arr+",");
}else{
System.out.println(arr+"]");
}
}
}
}
结果是:[[I@150bd4d,[I@150bd4d,[I@150bd4d,[I@150bd4d,[I@150bd4d]
[[I@150bd4d,[I@150bd4d,[I@150bd4d,[I@150bd4d,[I@150bd4d]
我知道造成这种结果的原因 但是实在是找不到我代码中哪个步骤有错误造成了这个结果 求解
|