经典算法4:分治法求解快速排序
发布时间:2020-12-16 07:48:03 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 /// summary /// 快速排序 /// 以Int数据类型为例 /// /summary public class FengQuickSort { /// summary /// 快速排序 /// 索引范围[startIndex,en
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 /// <summary> /// 快速排序 /// 以Int数据类型为例 /// </summary> public class FengQuickSort { /// <summary> /// 快速排序 /// 索引范围[startIndex,endIndex] /// </summary> /// <param name="arr">待排序数组</param> /// <param name="startIndex">起始索引</param> /// <param name="endIndex">终止索引</param> public void QuickSort(int[] arr,int startIndex,int endIndex) { if (startIndex < endIndex) { int midIndex = PartitionAjust(arr,startIndex,endIndex); QuickSort(arr,midIndex-1); QuickSort(arr,midIndex + 1,endIndex); } } //调整范围为[leftIndex,rightIndex] //返回调整后的中轴索引值 private int PartitionAjust(int[] arr,int leftIndex,int rightIndex) { //比较的中轴值 int midValue = arr[leftIndex]; int leftFlag = leftIndex; int rightFlag = rightIndex; while (leftFlag < rightFlag) { //从右向左找到小于中轴值的值 while (leftFlag < rightFlag && arr[rightFlag] >= midValue) { --rightFlag; } arr[leftFlag] = arr[rightFlag]; //从左向右找到大于中轴值的值 while (leftFlag < rightFlag && arr[leftFlag] <= midValue) { ++leftFlag; } arr[rightFlag] = arr[leftFlag]; } arr[leftFlag] = midValue; return leftFlag; } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |