我寫了一個程序,我必須寫出一個快速排序的代碼。我正在使用一個Comparable []數組。爲了交換數組的兩個元素,我必須在變量中存儲一個元素。通常,對於字符串數組,我可以將該元素存儲在字符串變量中,但不允許將該值存儲在具有Comparable Array的字符串變量中。我如何從這個數組外的這個Comparable數組中存儲一個元素,這樣我就可以交換這兩個元素了?這就是我的程序的樣子,我卡在的部分沒有代碼。如何在變量中存儲一個Comparable元素?
import java.io.*;
public class QuickSort{
public static void main (String args[]) {
Comparable[] q = Read();
int l = 0;
int x = q.length-1;
QSortr(q, l, x);
PrintFxn(q);
}
public static Comparable[] Read() {
String hold[] = new String[1000];
int numin=0;
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s;
s=br.readLine();
while (s!=null&& !s.equals("")) {
hold[numin]= s;
numin++;
s=br.readLine();
}
br.close();
} catch (Exception e) {System.out.println("Ack!:" + e); }
Comparable q[] = new String[numin];
for(int a=0; a<numin; a++) {
q[a] = hold[a];
}
return q; }
public static int QSort(Comparable q[], int l, int x) {
int r = l +1;
int m= l;
int k = l;
while(r<q.length-1){
if(q[r].compareTo(q[k])<=0){
m++; r++; }
else{
while(q[r].compareTo(q[k])>0&&r<q.length-1){
r++; }
m++;
//This is where i'm stuck...
q[r] = q[m];
q[m] = a[0]; }
}
return m;}
public static Comparable [] QSortr(Comparable q [], int l, int x) {
while(l<x) {
int a = QSort(q, l, x);
QSortr(q, l, a-1);
QSortr(q, a+1, x); }
return q; }
public static void PrintFxn(Comparable[] q) {
for(int a=0; a<q.length; a++) {
System.out.println(q[a]); }
}
}
也許我很密集,但不能使用,呃,使用Comparable? – tom
這正是我想知道的是,這可能/允許/合乎邏輯嗎? –