81,090
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#define LENGTH 8
main(){
int r[LENGTH] = {42,36,56,78,67,11,27,36};
int i,j,temp,mark;
for(i=1;i<LENGTH-1;i++){/*控制共进行LENGTH-1趟排序*/
mark = 0;
for(j=0;j<LENGTH-i;j++){/*进行第i趟排序*/
if(r[j]>r[j+1]){
temp = r[j];
r[j]= r[j+1];
r[j+1] = temp;
}
}
if(mark==0)
break;
}
for(i=0;i<LENGTH;i++)
printf("%d ",r[i]);
printf("\n");
}
#include<stdio.h>
int Partition(int r[],int s,int t){
int i,j,rp;
i = s;/*i开始位置*/
j=t;/*j结束位置*/
rp = r[s];/*基准记录暂存rp*/
while(i<j){
while(i<j&&r[j]>=rp)
j--;/*扫描比基准记录小的位置*/
r[i] = r[j];/*将比记录小的记录移到低端*/
while(i<j&&r[i]<=rp)
i++;/*扫描比基准记录大的位置*/
r[j] = r[i];
}
r[i] = rp;
return i;
}
void Qsort(int r[],int s,int t)/*快速排序算法*/
{
int k;
if(s<t){
k = Partition(r,s,t);/*调用一段快速排序算法将r[s]...r[t]一分为二*/
Qsort(r,s,k-1);/*低端子序列递归排序,k是支点位置*/
Qsort(r,k+1,t);/*高端子序列排序*/
}
}
#define LENGTH 8
main(){
int i;
int r[LENGTH] = {42,36,56,78,67,11,27,36};
Qsort(r,0,LENGTH-1);
for(i = 0;i<LENGTH;i++)
printf("%d ",r[i]);
}