折半法
发表在C语言图书答疑 2018-12-23 悬赏:4 学分 《零基础学C语言》第8章 数组 175页-176页
是否精华
版块置顶:

#include<stdio.h>

void celerityrun(int left,int right,int array[]);

void xun(int c[]);

int main()

{

int i;

int a[5]={9,6,15,4,2};

celerityrun(0,4,a);

printf("输出排序后的数组:\n");

for(i=0;i<5;i++)

{

printf("%d\t",a[i]);

}

printf("\n");

return 0;

}

void celerityrun(int left,int right,int array[])

{

int i,j;

int middle,itemp;

i=left;

j=right;

middle=array[(left+right)/2];

do

{

while((array[i]<middle)&&(i<right))

{

i++;

printf("输出while调节后i=%d,顺序为\n",i);

}

while((array[j]>middle)&&(j>left))

{

j--;

printf("输出while调节后j=%d,顺序为\n",j);

}

if(i<=j)

{

itemp=array[i];

array[i]=array[j];

array[j]=itemp;

xun(array);

i++;

printf("输出if调节后i=%d,顺序为\n",i);

j--;

printf("输出if调节后j=%d,顺序为\n",j);

}

}while(i<=j);

if(left<j)

{

celerityrun(left,j,array);

xun(array);

}

if(right<i)

{

celerityrun(i,right,array);

xun(array);

}

}

void xun(int d[])

{

int c;

int k[5];

for(c=0;c<5;c++)

printf("%d\t",k[c]);

}

241822461.jpg

,这个排序怎么把它每一步排序写书来,是不是需要用指数做函数的参数再写一遍?怎么改,想让折半法排序步骤跟清晰点,有助于理解,这个在第一部 的do{ }while,都能理解,在递归调用自己本身的函数时候,I=多少,J=多少,有点混乱,然后想把每一步移动的步骤编写出来,如果用指数,求老师帮忙改下,谢谢

分享到:
精彩评论 1
李木子
学分:2954 LV11
2018-12-24
沙发

你好:

   请运行光盘中的源码试试

首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照