您的位置:首页 > 其它

归并排序2(选第一个数为基准数)

2013-04-03 09:08 134 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐