鱼C论坛

 找回密码
 立即注册
查看: 2485|回复: 1

仿小甲鱼程序,有问题,求大神指点

[复制链接]
发表于 2019-8-31 23:04:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

#include<stdio.h>
int pai(int c[],int i,int j)
{
    int a=i,b=j;
   int tem;
  while(a<=b)
  {
while(c[a]<c[(i+j)/2])
{a++;}
while(c[b]>c[(i+j)/2])
{b--;}
if(a<=b)
{
tem=c[a];
c[a]=c[b];
c[b]=tem;
a++;
b--;
}
  }
  if(i<b)
  {
   pai( c,i,b);
  }
  if(a<j)
  {
   pai(c,a,j);
//pai(c,b,a);加了这个重新再排就正常了,自己感觉改的很差。
}
   }
  


int main()
{
int n,i=0;
int j;
int c[]={1,0,4,6,3,9,10,8,5,7,2};
n=sizeof(c)/sizeof(int);
pai(c, i,n-1);
for( j=0;j<n;j++)
{
printf("%d ",c[j]);
}
return 0;

}
/*
    1,0,4,6,3,9,10,8,5,7,2
           |
1 0 4 6 3 2 10 8 5 7 9
            |
  1 0 4 6 3 2    10 8 5 7 9//仿小甲鱼的程序,不知道哪出了问题,人工排序才发现这一步就出错了,5和6还没排好序就另成各一派递归了,导致结果出错,求大神帮我改进一下,自己改的有点差。
*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-1 13:18:41 | 显示全部楼层
给你提几个建议
1. while 迭代, pai递归 时间复杂度增加
2. 排序都有常用的算法,比如冒泡, 选择排序。。。。 看你用的是哪种。一般简单的迭代下就可以完成。不用搞这么复杂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 23:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表