图一快速排序首先在一个数组里面有两个位置,一个是i,一个是j (图一)
再寻找一个基准数 一般都是数组的第一个数字为基准数,这时候 i 会向右→移动,来寻找比6大的数字, j 会向左←移动,来寻找比6小的数字,当寻找到 i , j 找到数字时,二者开始交换,直到 i ==j 的时候,停止
public static void main (String []args){
int arr[]={10,7,2,4,7,62,3,4,2,1,8,9,19};
quickSort(arr,0,arr.lenght-1);
}
public static void quickSort(int [ ] arr,int low, int high)
{
int i , j , temp,t;
if(low>high)
{
return;
}
i=low;
j=high;
temp=arr[low] //基准位
while(i<j)
{
//先看右边
while(temp<=arr[j]&&i<j)
{
j--;
}
while(temp>arr[j]&&i<j)
{
i++;
}
if(i<j)
{
t=arr[j];
arr[j]=arr[i];
arr[i]=t;
}
}
//最后把基准位与i和j相等的位置进行交换
arr[low]=arr[i];
arr[i]=temp;
//递归排序左半边
quickSort (arr,0,j);
//递归右半边
quickSort (arr,low,j-1);
quickSort (arr,j+1,high);
}
网友评论