快速排序法 class QuerySort { public void sort(int left,int right,int []array) { int l=left; int r=right; int pivot=array[(left+right)/2]; int temp=0; while(l<r) { while(array[l]<pivot) l++; while(array[r]>pivot) r--; if(l>=r) break; temp=array[l]; array[l]=array[r]; array[r]=temp; if(array[l]==pivot) --r; if(array[r]==pivot) ++l; } if(l==r) { l++; r--; } if(left<r) sort(left,r,array); if(right>l) sort(l, right, array); } } 插入排序 class InsertSort { public void sort(int arr[]) { for(int i=1;i<arr.length;i++) { int insertVal=arr[i]; ///insertVal准备和前一个数比较 int index=i-1; while(index>=0&&insertVal<arr[index]) { ///将arr[index]向后移动 arr[index+1]=arr[index]; ///让index向前移 index--; } ///将insertVal插入适当位置 arr[index+1]=insertVal; } } } 选择排序 class Select { public void sort(int arr[]) { int temp; for(int j=0;j<arr.length-1;j++) { 默认第一个j数最小 int min=arr[j]; ///记录最小数的下标minIndex int minIndex=j; for(int k=j+1;k<arr.length;k++) { if(min>arr[k]) { min=arr[k]; minIndex=k; } } ///退出内部for时找到这次的最小值 ///用中间变量记录arr[j] temp=arr[j]; ///将arr[j]和最小值arr[minIndex]替换 arr[j]=arr[minIndex]; ///将arr[minIndex]赋值为中间变量temp arr[minIndex]=temp; } } } 冒泡排序 class Bubble { public void sort(int arr[]) { int temp; 外层排序,决定要走几趟 for(int i=0;i<arr.length-1;i++) { 内层排序,逐个比较,前一个数比后一个数打,则交换位置 for(int j=0;j<arr.length-1-i;j++) /arr.length-1-i { if(arr[j]>arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } } }