------- android培训、java培训、期待与您交流! ----------
Java中几种常用排序算法:
class ThreeSort { public static void main(String[] args)//主函数,用于测试代码 { int[] arr={2,8,9,4,3,1,6}; quickSort1(arr,0,arr.length-1); sop(arr); } public static void sop(int[] arr)//数组打印方法 { for(int i=0;i<arr.length;i++) { System.out.print(arr[i]+"\t"); } } public static void selectionSort1(int[] arr)//选择排序方法,从小到大 { for(int i=0;i<arr.length-1;i++) { for(int j=i+1;j<arr.length;j++) { if(arr[i]>arr[j]) { int temp; temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } public static void selectionSort2(int[] arr)//选择排序方法,从大到小 { for(int i=0;i<arr.length-1;i++) { for(int j=i+1;j<arr.length;j++) { if(arr[i]<arr[j]) { int temp; temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } public static void bubbleSort1(int[] arr)//冒泡排序方法,从小到大 { for(int i=0;i<arr.length;i++) { for(int j=0;j<arr.length-1-i;j++) { if(arr[j]>arr[j+1]) { int temp; temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } public static void bubbleSort2(int[] arr)//冒泡排序方法,从大到小 { for(int i=0;i<arr.length;i++) { for(int j=0;j<arr.length-1-i;j++) { if(arr[j]<arr[j+1]) { int temp; temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } public static void quickSort1(int[] arr,int left,int right)//快速排序算法,从小到大 { int i,j; int x,y; i=left; j=right; x=arr[(left+right)/2]; do{ while((arr[i]<x)&&(i<right)) i++; while((x<arr[j])&&(j>left)) j--; if(i<=j) { y=arr[i]; arr[i]=arr[j]; arr[j]=y; i++; j--; } }while(i<=j); if(left<j) quickSort1(arr,left,j); if(i<right) quickSort1(arr,i,right); } public static void quickSort2(int[] arr,int left,int right)//快速排序算法,从大到小 { int i,j; int x,y; i=left; j=right; x=arr[(left+right)/2]; do{ while((arr[i]>x)&&(i<right)) i++; while((x>arr[j])&&(j>left)) j--; if(i<=j) { y=arr[i]; arr[i]=arr[j]; arr[j]=y; i++; j--; } }while(i<=j); if(left<j) quickSort2(arr,left,j); if(i<right) quickSort2(arr,i,right); } }