首页 > 编程 > Java > 正文

java快速排序优化

2019-11-08 01:19:20
字体:
来源:转载
供稿:网友
PRivate<TextendsComparable<?superT>>voidquickSort(T[]targetArr,intstart,intend){inti=start,j=end;Tkey=targetArr[start]; while(i<j){/*按j--方向遍历目标数组,直到比key小的值为止*/while(j>i&&targetArr[j].compareTo(key)>=0){j--;}if(i<j){/*targetArr[i]已经保存在key中,可将后面的数填入*/targetArr[i]=targetArr[j];i++;}/*按i++方向遍历目标数组,直到比key大的值为止*/while(i<j&&targetArr[i].compareTo(key)<=0)/*此处一定要小于等于零,假设数组之内有一亿个1,0交替出现的话,而key的值又恰巧是1的话,那么这个小于等于的作用就会使下面的if语句少执行一亿次。*/{i++;}if(i<j){/*targetArr[j]已保存在targetArr[i]中,可将前面的值填入*/targetArr[j]=targetArr[i];j--;}}/*此时i==j*/targetArr[i]=key; /*递归调用,把key前面的完成排序*/this.quickSort(targetArr,start,i-1);  /*递归调用,把key后面的完成排序*/this.quickSort(targetArr,j+1,end); }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表