快速排序 quickSort

public class QuickSort {

 private int[] aArr;
 
 public void setArr(int[] aArr){
  this.aArr=aArr;
 }
 public static void main(String[] args) {
  QuickSort qs=new QuickSort();
  int[] aArr=new int[8];
  qs.setArr(aArr);
  System.out.println("原始数组:");
  
  for(int i=0;i<8;i++){
   aArr[i]=(int)(Math.random()*100);
   System.out.print(aArr[i]+"       ");
  }
  
  System.out.println();
  System.out.println("排序:");
  int sortI=qs.sort(0,aArr.length-1,30);

  for(int i=0;i<8;i++){
   System.out.print(aArr[i]+"       ");
  }
  System.out.println("中间下标:"+sortI);
  System.out.println();
  
  System.out.println("排序2:");
  qs.quickSort(0,aArr.length-1);
  for(int i=0;i<8;i++){
   System.out.print(aArr[i]+"       ");
  }
 }
 
 int sort(int left,int right,int midVal){
  int left2=left-1;
  int right2=right+1;//数组长度
  int i=0;
  int j=0;
  while(true){
   while(aArr[++left2]<midVal);
   while(aArr[--right2]>midVal);
   if(left2>=right2)
    break;
   else
    swap(left2,right2);
  }
  return left2;
 }
 
 void swap(int left,int right){
  int temp=aArr[left];
  aArr[left]=aArr[right];
  aArr[right]=temp;
 }
 
 void quickSort(int left,int right){
  if(left<right){
   
  int s= sort2(left,right);
  quickSort(0,s-1);
  quickSort(s+1,right);
  }
 }
 
 int sort2(int left,int right){
  int left2=left-1;
  int right2=right+1;//数组长度
  int i=0;
  int j=0;
  int midVal=aArr[right];
  while(true){
   while(aArr[++left2]<midVal);
   while(aArr[--right2]>midVal);
   if(left2>=right2)
    break;
   else
    swap(left2,right2);
  }
  return left2;
 }
}

你可能感兴趣的:(J#)