继冒泡排序的快速排序[手动滑稽]
冒泡排序:见我另一篇文章。
上代码
public class 快排 {
static int a [] = {6,1,2,5,4,3,9,7,10,8};
public static void quicksort(int left,int right){
if(left > right){ //如果左边大于右边结束
return ;
}
int i = left;
int j = right;
int temp = a[left]; //设基准数为左边第一个
while(i != j){
while(j > i && a[j] <= temp){ //首先从右边开始查找比基准数小的数
j--;
}
while(j > i && a[i] >= temp){ //从左边找到比基准数大的数
i++;
}
if(i != j){ //左右(i和j)不相等后-
int num = a[i]; //-将找的两个数字交换
a[i] = a[j];
a[j] = num;
}
}
a[left] = a[i]; //将基准数与中间的数字进行交换(注意不要-
a[i] = temp; //-把这两个值附乱了)
quicksort(left,i - 1); //以i(或j)为分割,分成两份进行递归
quicksort(i + 1,right); //类似二分法
}
public static void main(String [] args){
quicksort(0,9);
for(int d = 0;d < 10;d++){
System.out.print(a[d] + " ");
}
}
}
原理:
最后我推荐 啊哈!算法 这本书需要电子版的私我哈