/**
* 递归的快速排序
* @param begin 排序的开始位置
* @param end 排序的结束位置
*/
public static void Sort(int[] array , int begin, int end) {
if (begin >= end) { // 如果分段中的数小于等于1个,直接返回
return;
}
int left = begin;
int right = end;
int key = array[left];
while (left < right) {
while (right > left) {
if (array[right] <= key) { // 注意在这两处判断的地方要有一处有等于号
//交换两个数的位置
int temp = array[left];
array[left] = array[right];
array[right] = temp;
break;
}
right--; // 不管是否发生交换,这里都需要移动
}
while (left < right) {
if (array[left] > key) {
//交换两个数的位置
int temp = array[left];
array[left] = array[right];
array[right] = temp;
break;
}
left++; // 不管是否发生交换,这里都需要移动
}
}
Sort(array , begin, left - 1); // 递归时记得减1和加1
Sort(array , left + 1, end);
for(int i=0;i<array.length;i++){
System.out.println("yc1-----" +array[i]);
}
}