- (void)quickSort:(int *)arr begin:(int)begin end:(int)end {
/*快速排序
1.在数组中选一个基准数(通常为数组第一个);
2. 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边;
3. 对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序。
*/
//int array[10] = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
if (begin >= end) {
return;
}
int temp = arr[begin];
int i = begin;
int j = end;
while (i < j) {
while (arr[j] >= temp && j > i) {
j --;
}
while (arr[i] <= temp && j > i) {
i ++;
}
printf("i = %d,j = %d\n",i,j);
if (i < j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
int tmp = arr[begin];
arr[begin] = arr[i];
arr[i] = tmp;
[self quickSort:arr begin:begin end:i - 1];
[self quickSort:arr begin:i + 1 end:end];
}