publicclassTestSort{publicstaticvoidmain(String[]args){int[]arrB=newint[]{44,12,32,45,67,745,31,77,90,17,23,24};int[]arrQ=newint[]{44,12,32,45,67};Sorts=newSort();s.Bubbl...
public class TestSort {
public static void main(String[] args) {
int[] arrB = new int[]{44,12,32,45,67,745,31,77,90,17,23,24};
int[] arrQ = new int[]{44,12,32,45,67};
Sort s = new Sort();
s.BubbleSort(arrB);
for(int i=0; i<=arrB.length-1; i++){
System.out.print(arrB[i]+" ");
s.QuickSort(arrQ,0,arrQ.length-1);
for(int j=0; j<=arrQ.length-1; j++){
System.out.println(arrQ[j]+" ");
}
}
}
}
class Sort {
public int[] BubbleSort(int[] arr){//冒泡排序 适用于乱序量较小的数列
for(int i=0; i<=arr.length-1; i++){//外循环控制比较的轮数,n个数比较n-1轮
for(int j=0; j
int t = 0;
if(arr[j]>arr[j+1]){//包含了数据相等的情况,不写>=号
t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
}
return arr;
}
public int[] QuickSort(int[] arr,int low,int high){//快速排序
int l = low;
int h = high;
if(arr.length==1){
return arr;
}else if(arr.length==2){//当数组元素个数为1或2时的情况
if(arr[0]<=arr[1]){
return arr;
}else{
int t = arr[0];
arr[0] = arr[1];
arr[1] = t;
return arr;
}
}else{
int m = arr[l];//将数组首位保存在m中作为中轴数,将arr[l]空出来
int s = l;//用来记录空位的数组下标
while(l
while(l
if(arr[h]
arr[s] = arr[h];//将arr[h]移到空位中,并将arr[h]作为新空位
s = h;
break;
}
h--;
}
while(l
if(arr[l]>m){
arr[s] = arr[l];
s = l;
break;
}
l++;
}
}
s[l] = m;//退出大循环l == h把m赋值给s[l]
QuickSort(arr,low,l-1);
QuickSort(arr,h+1,high);//递归调用
return arr;
}
}
}
就是快速排序方法里的递归出的问题我自己看不出来。。。。
展开