首页 > 编程知识 正文

java递归快速排序算法,java基础知识笔记

时间:2023-05-06 17:47:40 阅读:164256 作者:2954

算法思想:

在给定的序列中查找标准值。 通常是区间最左边的要素,表示为baseValue。 序列中所有大于baseValue的元素都位于右侧。 序列中小于baseValue的元素剧放在其左侧。 在baseValue的左右子序列中重复步骤1、2和3。 核心代码:

如果privatevoidquicksort(int[]nums,int left,int right )//左索引等于且索引描述区间只有一个元素,则不需要进行排序。 if(left=right )返回; int i=left; int j=right; //区间最左端的要素称为基准值。 int baseValue=nums[i]; //左索引向右移动,右索引向左移动,当左右索引相等时,区间遍历完成。 wile(ij )//如果右的要素为基准值以上,则将右索引向左移动,对右的要素判定两次直到小于基准值。 //ij是必需的。 因为右索引向左移动可能会与左索引发生冲突。 while(nums(j )=basevalueij ) j----; //注意到右边有大于基准值的要素,向左边移动。 nums[i]=nums[j]; //然后值的左边的索引从移动,大于基准值的元素while(nums[I]=basevalueij ) I; //注意到左边有大于基准值的元素,向右移动。 在这个循环中,j的位置已经空出来了。 nums[j]=nums[i]; //左右的索引相遇的地方是应该放置基准值的位置。 nums[i]=baseValue; //排列基准值左侧的子序列。 快速引导(nums,left,i-1 ); //排列基准值右侧的子序列。 quicksort(nums,i 1,right ); }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。