黑马程序员技术交流社区
标题:
关于程序运行时候错误的问题.
[打印本页]
作者:
tc4892998
时间:
2014-5-23 22:03
标题:
关于程序运行时候错误的问题.
我在进行选择排序的练习,代码如下:
package com.itheima;
import java.util.Arrays;
/*
* 3、 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。
*/
public class Test03 {
/*
* 在排序方法中,分别有插入排序法,归并排序,快速排序,冒泡排序,希尔排序,选择排序 那么我将用Java语言实现选择排序
*/
public static void main(String[] args) {
// 创建一个数组
int[] arr = { 1, 22, 57, 31, 5, 8, 43, 98, 37 };
System.out.println("排序前的数组为:" + Arrays.toString(arr));
// 循环方法进行选择排序
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length - 1; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("排序后的数组为:" + Arrays.toString(arr));
}
}
运行后如图所示,请问这是什么情况?如果把 j<arr.length-1 改成 j<arr.length 则输出正常...
请指教
Error.jpg
(170.08 KB, 下载次数: 13)
下载附件
2014-5-23 22:01 上传
作者:
tc4892998
时间:
2014-5-23 22:07
而且我有2个类文件,一个类运行出来是正确的结果,一个就如图所示.
2个的代码是复制粘贴的...
作者:
tc4892998
时间:
2014-5-23 22:27
我找到错误的地方了...是我的代码里有错误,
在第19与20行,应该是 i<arr.length- 1 j<arr.length
作者:
java木
时间:
2014-5-24 00:08
我也经常这样,粗心大意真的会害死人啊
作者:
294645832
时间:
2014-5-24 10:29
本帖最后由 294645832 于 2014-5-24 10:33 编辑
package com.itheima;
import java.util.Arrays;
public class Paixu {
/*
选择排序。
内循环结束一次,最值出现头角标位置上。
*/
public static void main(String[] args)
{
int[] arr={5,1,6,4,2,8,9};
printArr(arr);
Arrays.sort(arr);//排序、、、
printArr(arr);
}
public static void getpaixu(int[] arr)
{
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
{
{
if (arr[x]>arr[y])
{
/*
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
*/
swap(arr,x,y);
}
}
}
}
}
public static void swap(int[] arr,int x,int y)
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
public static void printArr(int[] arr)
{
for (int x=0;x<arr.length ;x++ )
{
//System.out.print("arr["+x+"]="+arr[x]+";");
System.out.print(arr[x]+";");
}
System.out.println();
}
}
复制代码
应该为外循环中的x<arr.length-1,
因为当外循环的x到达最后一位时如果都为arr.length x角标为6,y也为6
那么角标同样指到了最后一位是没有必要的,所以优化一下,x<arr.length-1 当x<arr.length-1的时候, x指到了角标5,y指到了角标6.
如果 按照你的来,x角标为6的时候,y则是5,所以少遍历了一位。
作者:
tc4892998
时间:
2014-5-24 20:54
294645832 发表于 2014-5-24 10:29
应该为外循环中的x
那最下方的那个error是怎么回事呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2