重庆好点的Java设计培训机构?达内java培训,专注IT培训19年,100万学生的选择!26大IT方向,培训Java/UI设计/Web前端/软件测试/网络营销等!达内java培训可先学习后付款!
达内Java培训机构,以Java培训班起家,专注Java培训19年,讲师大多来自行业企业,课程设置更切合企业实际用人需求,学习Java开发技术选达内,美国上市教育机构,双师教学模式效果更有保障。
本文达内小编给大家介绍一下排序,看完希望大家能掌握。
先介绍排序需要用到的工具:左指针、右指针、中间值。
用到的思想:递归
取数组中个元素作为中间值,然后左右指针分别跟中间值进行比较,小于中间值的放在左边,大于中间值的放在右边,当左右指针重合时,重合位置处的左边数值全部比中间值小,右边全部比中间值大。
这样数组就分成了两个部分,再对这两部分如法炮制,分别又生成了两个数组,依次递归下去,递归结束的条件是左指针大于或者等于右指针。
public static void quickSort(int[]a,int left,int right){
if(left<right){
int index=getIndex(a,left,right);
quickSort(a,left,index-1);
quickSort(a,index+1,right);
}
}
public static int getIndex(int[]a,int left,int right){
int tmp=a[left];
while(left<right){
//用while循环,来判断右指针对应的数是否大于tmp,是的话不用交换,直接移动右指针即可
while(left<right&&a[right]>=tmp){
right--;
}
//顺序执行到这里,肯定是不满足上面的while循环条件,也就是右边的数要小于中间值,此时需要把右边的数换到左边
a[left]=a[right];
while(left<right&&a[left]<=tmp){
left++;
}
a[right]=a[left];
}
//当循环结束后,左右两边都分好大小,而指针重合位置处却没有值,需要把中间值放进来。
a[left]=tmp;
//返回两者相交处。
return left;
}
以上就是今天的Java设计知识分享,可点击页面客服留言或咨询,或者直接拨打页面热线联系到我们,期待您的咨询。