快速排序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);//亲测正确。
}
}
}