欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 【Java排序】快速排序

【Java排序】快速排序

2024/12/23 8:54:50 来源:https://blog.csdn.net/m0_75260099/article/details/144316066  浏览:    关键词:【Java排序】快速排序

快速排序是一种分治算法。它采用递归的方式,将一个数组分为两个子数组,然后对这两个子数组分别进行排序。

具体实现
	public static void kuaiSort(int[] arr,int low,int high) {int temp,i,j,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[i]&&i<j) {i++;}if(i<j) {t = arr[j];arr[j]=arr[i];arr[i]=t;}}arr[low]=arr[i];arr[i]=temp;kuaiSort(arr,low,j-1);kuaiSort(arr,j+1,high);}

函数定义
public static void kuaiSort(int[] arr,int low,int high) 定义了一个名为kuaiSort的静态方法,它接受一个整型数组arr和两个整型参数lowhigh,分别代表要排序的数组的起始和结束索引。

终止条件
if(low > high) 如果low索引大于high索引,说明当前子数组只有一个元素或者已经排序完成,直接返回。

初始化

i=low; j=high; temp=arr[low]; 初始化两个指针ij分别指向子数组的起始和结束位置,temp用于存储基准值,这里选择的是子数组的第一个元

分区操作

while(i < j):只要ij没有相遇,就继续分区操作。

while(temp <= arr[j] && i < j):从右向左找第一个小于基准值的元素。

while(temp >= arr[i] && i < j):从左向右找第一个大于等于基准值的元素。

if(i < j):如果ij还没有相遇,交换这两个元素。

arr[low] = arr[i]; arr[i] = temp;:将基准值放到正确的位置。

递归排序

kuaiSort(arr, low, j - 1); 对基准值左边的子数组进行快速排序。

kuaiSort(arr, j + 1, high); 对基准值右边的子数组进行快速排序。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com