📄
字号:
#define MAXN 20
#include <stdlib.h>
/* 对数组 a 中的第 low 至第 up 个元素进行快速排序 */
void quick_sort(int a[], int low, int up)
{
int i, j;
int t;
if(low < up)
{
/* 如果有元素需要排序 */
/* 设置基本标志 */
i = low;
j = up;
/* 将首个元素设为控制值,同时形成空位 */
t = a[low];
while(i != j)
{
/* 移动右侧的下标标志 */
while(i < j && a[j] > t)
j--;
/* 找到比控制值小的值,移动到空位 */
if(i < j)
a[i++] = a[j];
/* 移动左侧的下标标志 */
while(i < j && a[i] <= t)
i++;
/* 找到比控制值大的值,移动到空位 */
if(i < j)
a[j--] = a[i];
}
/* 将控制值填回空位 */
a[i] = t;
/* 对控制值左侧和右侧部分分别进行快速排序递归操作 */
quick_sort(a, low, i - 1);
quick_sort(a, i + 1, up);
}
}
void main()
{
int i, n;
int data[MAXN];
int scount = 0;
printf("\nInput n (n <= 20) = ");
scanf("%d", &n);
if(n > MAXN - 1)
{
printf("### n > %d ###\n", MAXN - 1);
getch();
exit(1);
}
/* 随机生成 n 个数 */
randomize();
printf("Before: ");
for(i = 0; i < n; i++)
{
data[i] = rand();
printf("%6d", data[i]);
}
/* 排序 */
quick_sort(data, 0, n);
/* 输出结果 */
printf("\nAfter: ");
for(i = 0; i < n; i++)
printf("%6d", data[i]);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -