/*
里面有个迭代思想哦
写出来简直感觉打通了任督二脉
如果连迭代都能搞定,后边的链表更不在话下了
*/
#include <stdio.h>
#define MAX 1024 //a数组元素个数上线
int a[MAX] ;
/*
作用:数组a快速排序
参数:最左最右下标
*/
void swap(int left, int right)
{
int i, j, x, temp; //i\j作为下标负责向右/左移动
i = left;
j = right;
if(left > right)
return ;
x = a[left]; //基准数
//将基准值归位
while (i != j)
{
while (a[j] >= x && j > i)
{
j--;
}
while (a[i] <= x && i < j)
{
i++;
}
if (i < j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
a[left] = a[i];
a[i] = x;
//二分法迭代
swap(left, i - 1);
swap(i + 1, right);
return;
}
int main()
{
int i = 0;
int j = 0; //输入整数的个数
//输入要排序的整数
printf("请输入要排序的整数:\n");
do
{
scanf("%d", &a[i]);
i++;
} while (getchar() != '\n');
a[i] = '\0';
//进行快速排序
j = i;
swap(0, j - 1);
//输出
for(i = 0; i < j; i++)
{
printf("%d ", a[i]);
}
return 0;
}