import java.util.Scanner;
public class duiProject {
public static void main(String[]args)throws Exception
{
int[]data=new int[2000];
input(data);
heap_sort(data);
}
public static void input(int[] data)throws Exception
{
java.io.File file1=new java.io.File("D:\\eclipse——workplace\\heapin.txt");
Scanner input=new Scanner(file1);
int i;
for(i=1;i<data.length;i++)
{
data[i]=input.nextInt();
}
input.close();
}
public static void output(int[] data, String str)throws Exception
{
java.io.File file2=new java.io.File("heapout.txt");
java.io.PrintWriter output=new java.io.PrintWriter(file2);
output.println(str);
for(int i=0; i<data.length; i++)
output.print(data[i] + " ");
output.println();
output.close();
}
public static void heap_sort(int []data)throws Exception
{
int n=data.length;
int temp=0;
output(data, "Before sort : ");
for(int i=n/2; i>0; i--)
Adjust(data, i-1, n);
for(int i=n-2; i>=0; i--)
{
temp = data[i+1];
data[i+1] = data[0];
data[0] = temp;
Adjust(data, 0, i+1);
}
output(data, "After sort : ");
}
public static void Adjust(int[] data, int i, int n)
{
int j = 0;
int temp = 0;
temp = data[i];
j = 2 * i + 1;
while(j <= n-1)
{
if(j < n-1 && data[j] < data[j+1])
j++;
if(temp >= data[j])
break;
data[(j-1)/2] = data[j];
j = 2 * j + 1;
}
data[(j-1)/2] = temp;
}
}菜鸟实在搞不懂啊
错误显示Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at duiProject.input(duiProject.java:16)
at duiProject.main(duiProject.java:6)
public class duiProject {
public static void main(String[]args)throws Exception
{
int[]data=new int[2000];
input(data);
heap_sort(data);
}
public static void input(int[] data)throws Exception
{
java.io.File file1=new java.io.File("D:\\eclipse——workplace\\heapin.txt");
Scanner input=new Scanner(file1);
int i;
for(i=1;i<data.length;i++)
{
data[i]=input.nextInt();
}
input.close();
}
public static void output(int[] data, String str)throws Exception
{
java.io.File file2=new java.io.File("heapout.txt");
java.io.PrintWriter output=new java.io.PrintWriter(file2);
output.println(str);
for(int i=0; i<data.length; i++)
output.print(data[i] + " ");
output.println();
output.close();
}
public static void heap_sort(int []data)throws Exception
{
int n=data.length;
int temp=0;
output(data, "Before sort : ");
for(int i=n/2; i>0; i--)
Adjust(data, i-1, n);
for(int i=n-2; i>=0; i--)
{
temp = data[i+1];
data[i+1] = data[0];
data[0] = temp;
Adjust(data, 0, i+1);
}
output(data, "After sort : ");
}
public static void Adjust(int[] data, int i, int n)
{
int j = 0;
int temp = 0;
temp = data[i];
j = 2 * i + 1;
while(j <= n-1)
{
if(j < n-1 && data[j] < data[j+1])
j++;
if(temp >= data[j])
break;
data[(j-1)/2] = data[j];
j = 2 * j + 1;
}
data[(j-1)/2] = temp;
}
}菜鸟实在搞不懂啊
错误显示Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at duiProject.input(duiProject.java:16)
at duiProject.main(duiProject.java:6)
解决方案 »
- java BufferedReader 读取的视频文件总是不完整
- 用链表实现队列怎么会造成空指向异常?
- 如何将开发出来的JavaBean控件加到Eclipse的VisualEditor中的Palette中
- 一个定时程序的启动和停止的问题
- 请问这样的查询有什么问题?
- 高手请进,求助,急急急--如何用java操作在Excel文档中加入图片
- 请教关于java和access,sql server,oracle等数据库连接的方法??
- 怎么用java传送7个16进制无符号数?
- java.lang.ClassCastException 这个是什么异常,能具体说明吗?
- java中怎么调用access的数据源?(新手提问)
- 【高分求解】帮忙看看这个正则表达式
- 新人求解 java 中的return 问题
public class duiProject {
public static void main(String[]args)throws Exception
{
int[]data=new int[2000];
input(data);
heap_sort(data);
}
public static void input(int[] data)throws Exception
{
java.io.File file1=new java.io.File("E:\\eclipse——workplace\\heapin.txt");
Scanner input=new Scanner(file1);
int i=0;
while(input.hasNext())
{
data[i]=input.nextInt();
i++;
}
input.close();
}
public static void output(int[] data, String str)throws Exception
{
java.io.File file2=new java.io.File("heapout.txt");
java.io.PrintWriter output=new java.io.PrintWriter(file2);
output.println(str);
for(int i=0; i<data.length; i++)
output.print(data[i] + " ");
output.println();
output.close();
}
public static void heap_sort(int []data)throws Exception
{
int n=data.length;
int temp=0;
output(data, "Before sort : ");
for(int i=n/2; i>0; i--)
Adjust(data, i-1, n);
for(int i=n-2; i>=0; i--)
{
temp = data[i+1];
data[i+1] = data[0];
data[0] = temp;
Adjust(data, 0, i+1);
}
output(data, "After sort : ");
}
public static void Adjust(int[] data, int i, int n)
{
int j = 0;
int temp = 0;
temp = data[i];
j = 2 * i + 1;
while(j <= n-1)
{
if(j < n-1 && data[j] < data[j+1])
j++;
if(temp >= data[j])
break;
data[(j-1)/2] = data[j];
j = 2 * j + 1;
}
data[(j-1)/2] = temp;
}
}
编译没问题了,运行结果不对呢。求解答!!!
我调试了输入没问题,就是输出有问题,不知道是不是排序出的问题
值没有传递应该是
public static int[] input(date)
改成这种模式看看
我调试了输入没问题,就是输出有问题,不知道是不是排序出的问题
值没有传递应该是
public static int[] input(date)
改成这种模式看看
不对了呀?
编译错误了就
因此每次调用output方法,都会用新内容覆盖掉新的内容。
可以通过取消heapsort方法中的第二个output方法,查看heapout.txt的内容,
可以看到是排序前的内容。更改output方法,向heapout.txt增加内容,而不是覆盖