A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


public class ArraySort {
/**
  * @param args
  */
// 数组为全局变量 便于快速排序测试
static int[] arr=new int[]{7,5,32,4,8,1,6,9,10,15};
public static void main(String[] args) {
  // TODO Auto-generated method stub
  
//  选择排序
  //selectSort(ArraySort.arr);
  
//  冒泡排序
  //bubbleSort(ArraySort.arr);
  
//  快速排序
//  快速排序递归算法的左半部分测试代码
//  int result=sortQ(ArraySort.arr,0,ArraySort.arr.length-1);
//  System.out.println(result);
//  result=sortQ(ArraySort.arr,0,result-1);
//  System.out.println(result);
  
//  快速排序递归算法的右半部分测试代码
//  int result=sortQ(ArraySort.arr,0,ArraySort.arr.length-1);
//  System.out.println(result);
//  result=sortQ(ArraySort.arr,result+1,ArraySort.arr.length-1);
//  System.out.println(result);
  quickSort(0,ArraySort.arr.length-1);
  printArr(ArraySort.arr);
}

//选择排序  把最小的拎出来放在前面,或者把最大的拎出来放在前面
public static void selectSort(int[] arr){  
  int temp=0;
  for(int i=0;i<arr.length-1;i++){
   for(int j=i+1;j<arr.length;j++){
    if(arr[i]>arr[j]){
     swap(i,j,temp,arr);
    }
   }
  }
}

//冒泡排序法 相邻的两个换位置。从小到大排序,相邻两个换位置一次排序实现最大的在最右边,同理从大到小排序,最小的在最右边
public static void bubbleSort(int[] arr){  
  int temp=0;
  for(int i=0;i<arr.length-1;i++){
   for(int j=0;j<arr.length-1-i;j++){
    if(arr[j]<arr[j+1])
     swap(j,j+1,temp,arr);
   }
  }
}
// 快速排序
public static void quickSort(int low,int hight){
  //快速排序 递归实现
  if(low<hight){
   int result=sortQ(ArraySort.arr,low,hight);
   quickSort(low,result-1);
   quickSort(result+1,hight);
   //System.out.println(result);
  }
}
public static int sortQ(int[] arr,int low,int hight){
  //此方法作用一次递归实现小于参考值得在左边,大于参考值的在右边
  int key=arr[low];
  int temp=0;
  while(low<hight){
   while(low<hight && arr[hight]>key){
    hight--;
   }
   while(low<hight && arr[low]<key){
    low++;
   }
   temp=arr[low];
   arr[low]=arr[hight];
   arr[hight]=temp;
  }
  return low;
}
// 交换位置函数
public static void swap(int i,int j,int temp,int[] arr){
  temp=arr[i];
  arr[i]=arr[j];
  arr[j]=temp;
}
// 打印数组函数
public static void printArr(int[] arr){
  System.out.print("[");
  for(int i=0;i<arr.length;i++){
   if(i!=arr.length-1)
    System.out.print(arr[i]+",");
   else
    System.out.print(arr[i]+"]");
  }
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马