快速排序思想应该是不用再说什么了,不明白请Bing!注释完善,看代码就行了!
底部附运行截图.....
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define len 100
void swapValue(int* a, int* b)
{
int t = *a;
*a = *b;
*b = t;
}
void quickSort(int* arr, int left, int right)
{
if (left > right)
return;
int base = arr[left];
int i = left;
int j = right;
while (i != j)
{
while (arr[j] >= base && j > i)
{
j--;
}
while (arr[i] <= base && j > i)
{
i++;
}
swapValue(&arr[i], &arr[j]);
}
swapValue(&arr[left], &arr[i]);
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
void printArray(int* arr)
{
for (size_t i = 0; i < len; i++)
{
printf("%d\t", arr[i]);
if (!((i + 1) % 10))
printf("\n");
}
}
int main(void)
{
srand((unsigned)time(NULL));
int arr[len];
for (size_t i = 0; i < len; i++)
{
arr[i] = rand() % 100;
}
printf("排序前*********************************\n\n");
printArray(arr);
quickSort(arr, 0, len - 1);
printf("\n排序后*******************************\n\n");
printArray(arr);
return EXIT_SUCCESS;
}