快速排序

快速排序首先在一个数组里面有两个位置,一个是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); 

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。