#include <stdio.h>
#include <stdlib.h>
#define size 11
typedef char datatype;
typedef struct
{ int key;
datatype others;
}SeqList;
int Partition(SeqList R[ ],int l,int h)
{ /*调用Parition(R,low,high)时对R[low..high]作划分*/
/*并返回基准记录的位置*/
int i,j;
SeqList pivot;
i=l;j=h;pivot=R[i]; /*初始化,pivot为基准*/
while(i<j) /*从区间两端交替向中间扫描,直至i=j为止*/
{ while(i<j&&R[j].key>=pivot.key) /*pivot相当于在位置i上*/
j--; /*从右向左扫描,查找第1个关键字小于pivot.key的记录R[j]*/
if(i<j) /*表示找到的R[j]的关键字<pivot.key*/
R[i++]=R[j]; /*相当于交换R[i]和R[j],交换后i指针加1*/
while(i<j&&R[i].key<=pivot.key) /*pivot相当于在位置j上*/
i++; /*从左向右扫描,查找第1个关键字大于pivot.key的记录R[i]*/
if(i<j) /*表示找到了R[i],使R[i].key>pivot.key*/
R[j--]=R[i]; /*相当于交换R[i]和R[j],交换后j指针减1*/
} /*endwhile*/
R[i]=pivot; /*基准记录已被最后定位*/
return i;
} /*partition*/
void QuickSort(SeqList R[ ],int low,int high)
{ /*对R[low.. high]快速排序*/
int pivotpos; /*划分后的基准记录的位置*/
if(low<high) /*仅当区间长度大于1时才须排序*/
{ pivotpos=Partition(R,low,high); /*对R[low..high]作划分*/
QuickSort(R,low,pivotpos-1); /*对左区间递归排序*/
QuickSort(R,pivotpos+1,high); /*对右区间递归排序*/
}
} /*QuickSort */
void main()
{ SeqList R[size];
int i;
printf("输入数据:\n");
for(i=1;i<size;i++) scanf("%d",&R[i].key);
printf("\n快速排序之前\n");
for(i=1;i<size;i++) printf("%d ",R[i].key);
QuickSort(R,1,10);
printf("\n快速排序之后\n");
for(i=1;i<size;i++) printf("%d ",R[i].key);
printf("\n");
}
快速排序我想输出每一趟排序的结果在哪里加输出语句啊
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- CSDN专家-赖老师(软件之家) 2021-06-10 22:29关注
在26行后面加一个循环语句,就可以输出每次排序的数据。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 4无用 2
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog