8种Java排序算法总结5(ZZ)

7、 快速排序

快速排序不稳定,O(log(n))的额外空间,时间复杂度为O(nlog(n)),不是自适应的。

 public void quickSort(){

recQuickSort(0,nElems-1);

}

public void recQuickSort(int left, int right){

if(right-left<=0){

return;

}else{

long pivot = theArray[right];



int partition = partitionIt(left, right, pivot);

recQuickSort(left, partition-1);

recQuickSort(partition+1, right);

}

}

public int partitionIt(int left, int right, long pivot){

int leftPtr = left -1;

int rightPtr = right;

while(true){

while(theArray[++leftPtr]<pivot);

while(rightPtr>0&&theArray[--rightPtr]>pivot);

if(leftPtr>=rightPtr){

break;

}else{

swap(leftPtr,rightPtr);

}

}swap(leftPtr,right);



return leftPtr;

}



public void swap(int dex1, int dex2){

long temp;

temp = theArray[dex1];

theArray[dex1]=theArray[dex2];

theArray[dex2]=temp;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值