package quicksort;
public class QuickSortTest {
public void quickSort2(int[] a,int left,int right)
{
int key=a[left];
if(left<right)
{
int i=left,j=right;
while(i<j)
{
while(i<j && a[j]>=key)
j--;
if(i<j)
swap(a,i++,j);
while(i<j && a[i]<=key)
i++;
if(i<j)
swap(a,i,j--);
}
System.out.println("i "+i);
quickSort2(a,left,i-1);
quickSort2(a,i+1,right);
}
}
public void swap(int[] a, int i, int j) {
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public void quickSort(int[] a,int left,int right)
{
int key=a[left]; //选择待排序数组的第一个数为基准数
if(left<right)
{
int i=left,j=right;
while(i<j)
{
while(i<j && a[j]>=key) //从后往前找,与基准数key作比较
j--;
if(i<j)
a[i++]=a[j];
while(i<j && a[i]<=key)
i++;
if(i<j)
a[j--]=a[i];
}
a[i]=key; //返回调整后基准数的位置i
quickSort(a,left,i-1);
quickSort(a,i+1,right);
}
}
public void print(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
if(i!=arr.length-1)
System.out.print(arr[i]+" ");
else
System.out.println(arr[i]);
}
}
public static void main(String[] args)
{
//int[] arr={24,65,70,44,43,98,59,54,82,87,53,73,59,3,73,49};
int[] arr={24,65,70,44,43,98};
QuickSortTest qst=new QuickSortTest();
qst.print(arr);
//qst.quickSort(arr, 0,arr.length-1);
qst.quickSort2(arr, 0,arr.length-1);
qst.print(arr);
}
}
归并排序2(选第一个数为基准数)
最新推荐文章于 2022-02-07 19:39:45 发布