您的位置:首页 > 编程语言 > Java开发

java快速排序优化

2017-02-21 13:00 218 查看
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);

 

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: