void QuickSort(int *arr,int start,int end);
#include <stdio.h>
void QuickSortShow(int* arr, int n)
{
for (int i = 0; i < n; i++) {
printf("%d\t", arr[i]);
}
puts("");
}
void QuickSort(int* arr, int start, int end)
{
int i = start;
int j = end;
// 1.保存轴线的值
int tmp = arr[i];
// 2循环比较,当i和j相遇的时候停止
while (i < j) {
// 3.当tmp<arr[j],j向前移动
//当循环停止的之后,j位置就找到了
while (i < j && tmp <= arr[j]) {
j--;
}
arr[i] = arr[j];
// 4.改变方向
while (i < j && tmp >= arr[i]) {
i++;
}
arr[j] = arr[i];
}
//将tmp放在a[i]的位置,此时左侧的数都小于tmp,右侧的数都大于tmp
arr[i] = tmp;
//左半部分递归
if (start < i - 1)
QuickSort(arr, start, i - 1);
//右半部分递归
if (j+1 < end)
QuickSort(arr, j + 1, end);
}
int main(int argc, const char* argv[])
{
int arr[6] = { 60, 33, 90, 12, 34, 88 };
QuickSort(arr, 0, 5);
QuickSortShow(arr, 6);
return 0;
}