2017年6月24日 星期六

第八章 QuickSort排序法 由大排到小


題目:使用Ellis Horowitz法,將陣列由大到小依序排列


class Sorter1 {
int[] data;

void quickSort(int start,int end) {

if(start >= end) {
return;
}

int mid = data[(start + end) / 2];

int left = start;
int right = end;
while(true) {
while(data[left] > mid) {
left++;
}
while(data[right] < mid) { //
right--;
}
if(left < right) { //
int temp = data[left]; //
data[left] = data[right];
data[right] = temp;
left++; //
right--; //
show();
}
else //
break;
}

  quickSort(start,left-1);
  quickSort(right+1,end);
  }

  void show() {
  for(int i:data) {
  System.out.print(i +" ");
  }
  System.out.println("");
  }

  void sort(int[] data) {
  this.data = data;
  show();
  quickSort(0,data.length - 1);
  }
 }

 public class HomeWork0810 {

 public static void main(String[] argv) {


int[] data = new int[argv.length];


for(int i = 0;i < data.length;i++) {
data[i] = java.lang.Integer.parseInt(argv[i]);
}

Sorter1 s = new Sorter1();

s.sort(data);
  }
 }

沒有留言:

張貼留言