活跃农民
- 积分
- 699
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-4-20
- 最后登录
- 1970-1-1
|
我想问下,我这代码排序完全没问题,是第一个编程题的代码。也是按照视频中讲的算法来写的,可是最后运行结果是158778,非正确答案,求大神指点一下代码哪个地方出现错误了!多谢多谢
import java.util.Arrays;
import java.util.Scanner;
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileNotFoundException;
public class QuickSort{
public static void main(String a[]){
int i;
int array[] = new NumJava().displayNum();
quick_srt sorter = new quick_srt(array);
System.out.println(" Quick Sort\n\n");
System.out.println("Total swaps:\n");
// sorter.quick_srt(array,0,array.length-1);
sorter.Quick_srt();
/* System.out.print("Values after the sort:\n");
for(i = 0; i <array.length; i++)
System.out.print(array[i]+" ");
System.out.println();
System.out.println("PAUSE"); */
System.out.println(sorter.getSwaps());
}
}
class quick_srt{
private long swaps;
private int[] array;
public quick_srt(int[] array){
this.array = array;
this.swaps = 0;
}
public void Quick_srt(){
Quick_srt(array,0,array.length-1);
}
protected void Quick_srt(int array[],int l, int r){
int le = l;
int ri = r;
int i = le+1;
int temp;
swaps = swaps + ri - le;
if (le >= ri) {
return;
}
for(int j = le+1; j <= ri; j++){
if(array[j] < array[le]){
temp = array[j];
array[j] = array[i];
array[i] = temp;
i++;
}
}
temp = array[le];
array[le] = array[i-1];
array[i-1] = temp;
Quick_srt(array, le, i-2);
Quick_srt(array, i, ri);
}
public long getSwaps(){
return swaps;
}
}
class NumJava {
int[] intNum ;
int[] displayNum(){
try {
FileReader fr = new FileReader("C:\\QuickSort_1.txt");
BufferedReader br = new BufferedReader(fr);
String line = null;
String strs[] = null;
StringBuilder num = new StringBuilder();
while((line = br.readLine())!=null){
num.append(line+" ");
}
//去除空格 并以#分割
strs = num.toString().trim().split(" ");
//以读取的字符数组 的长度 定义int数组长度
intNum = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
intNum[i] = Integer.parseInt(strs[i]);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return intNum;
}
} |
|