本帖最后由 嗨,强哥! 于 2014-7-23 15:19 编辑
这是我照抄的代码:
[mw_shl_code=c,true]/*quicksort --- 快速排序法*/
#include <stdio.h>
int a[101], n; //定义全局变量,这两个变量需要在子函数中使用
void quicksort (int left, int right) //quicksort:快速法
{
int i, j, t, temp; //temp: 临时雇员
if (left > right) //这边士兵探测的位置超过右边士兵的位置,则返回
return;
temp = a[left]; //temp 中存的就是基准数
i = left;
j = right;
while (i != j)
{
//顺序很重要,要先从右边开始找
while (a[j] >= temp && i<j)
j--;
//再找左边的
while (a <= temp && i<j)
i++;
//交换两个数在数组中的位置
if (i < j)
{ t = a; a = a[j]; a[j] = t; }
}
//最终将基准数归为
a[left] = a;
a = temp;
quicksort (left, i-1);//继续处理左边的,这是一个函数递归
quicksort (i+1, right);//继续处理右边的,这是一个函数递归
}
int main()
{
int i, j, t;
printf ("quicksort --- 快速排序法\n\n");
printf ("请输入需要排序的整数个数: ");
scanf ("%d", &n);
for (i = 1; i <= n; i++)
{
printf ("请输入第 %2d 个整数: ");
scanf ("%d", &a);
}
quicksort (1, n); //快速排序函数调用
printf ("\n");
//输出排序后的结果
printf ("排序后的序列: ");
for (i = 1; i <= n; i++)
printf ("%d ",a);
printf ("\n\n\n");
system("pause");
return 0;
}
[/mw_shl_code]
为准确、方便输入,自己多加了几条 printf() 语句,您对照检查的时候可以忽略不看。
|