快速排序Java算法一点通【简单示例】

快速排序Java算法简单示例如下:

publicclassQuicksort(){

/**

*快速排序

*/

publicvoidquickSort(int[]data){

quickSort(data,0,data.length-1);

}


publicvoidquickSort(int[]data,intlow,inthigh){

intleft=low;//向后扫描的开始坐标

intright=high-1;//向前扫描的开始坐标

intkey=data[high];//选一个元素为middle(key)值(key值也就是关键元素的值:在这里选定下标为high的元素作为key值)


while(left<right){//重复①②③,直至left大于或等于right

if(data[left]<key){

left++;

continue;//①从下标为left的元素开始向后扫描,找到第一个大于等于key值的data[i]。

}

if(data[right]>key){

right--;

continue;//②从下标为right的元素开始向前扫描,找到第一个小于等于key值的data[j]。

}

swap(data,left,right);//③将第一个大于等于key值的data[i]与第一个小于等于key值的data[j]互换其值。

}


if(data[left]<=key){

left++;

}//比如66(right)、78(left)、······、985(high)这种情况,在上面的while循环寻找交换结束后不用再将data[left]与data[high]交换其值了。

swap(data,left,high);//比如66(right)、78(left)、······、15(high)这种情况,在上面的while循环寻找交换结束后则还需要将data[left]与data[high]交换其值,这也是排序中最后一次交换其值。


if(left-1>low){

kuaisuSort(data,low,left-1);

}

if(left+1<high){

kuaisuSort(data,left+1,high);

}

}

publicstaticvoidmain(String[]args){

int[]arr={100,2,5,4,1,3,555,234,90954,10,17,120,77,65};

sort.quickSort(arr);

for(inti:arr){

System.out.println(i);//亲测正确。

}

}

}

/**
*快速排序
*/
publicvoidkuaisuSort(int[]data){
kuaisuSort(data,0,data.length-1);
}

publicvoidkuaisuSort(int[]data,intlow,inthigh){
intleft=low;
intright=high-1;
intkey=data[high];

while(left<right){
if(data[left]<=key){
left++;
continue;
}
if(data[right]>=key){
right--;
continue;
}
swap(data,left,right);
}

if(data[left]<=key){
left++;
}
swap(data,left,high);

if(left-1>low){
kuaisuSort(data,low,left-1);
}
if(left+1<high){
kuaisuSort(data,left+1,high);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值