加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

经典算法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】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读