首页
社区
课程
招聘
求高手帮忙看下怎么把一个delphi 顺序判断的代码 修改为二分判断
发表于: 2011-1-10 15:45 3296

求高手帮忙看下怎么把一个delphi 顺序判断的代码 修改为二分判断

2011-1-10 15:45
3296
Function NewTxt(mite:integer):integer;
Var
F : Textfile; {定义 F 为 Textfile}
FileName:string;

Begin
if  not FileExists(ExtractFilePath(ParamStr(0))+'1.txt')
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'1.txt';
 mite:=1
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'1.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'2.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'2.txt';
mite:=2
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'2.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'3.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'3.txt';
mite:=3
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'3.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'4.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'4.txt';
mite:=4
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'4.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'5.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'5.txt';
mite:=5
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'5.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'6.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'6.txt';
mite:=6
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'6.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'7.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'7.txt';
mite:=7
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'7.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'8.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'8.txt';
mite:=8
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'8.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'9.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'9.txt';
mite:=9
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'9.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'10.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'10.txt';
mite:=10
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'10.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'11.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'11.txt';
mite:=11
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'11.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'12.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'12.txt';
mite:=12
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'12.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'13.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'13.txt';
mite:=13
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'13.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'14.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'14.txt';
mite:=14
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'14.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'15.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'15.txt';
mite:=15
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'15.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'16.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'16.txt';
mite:=16
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'16.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'17.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'17.txt';
mite:=17
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'17.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'18.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'18.txt';
mite:=18
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'18.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'19.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'19.txt';
mite:=19
end
else if   FileExists(ExtractFilePath(ParamStr(0))+'19.txt') and ( not FileExists(ExtractFilePath(ParamStr(0))+'20.txt'))
then
begin
FileName:=ExtractFilePath(ParamStr(0))+'20.txt';
mite:=20
end;
 AssignFile(F,FileName); {将文件名与变量 F 关联}
 ReWrite(F); {创建Txt文档并命名为 “FileName ” }
 Closefile(F); {关闭文件 F}
 Result:=mite;

End;


这个函数是在当前路径下 依次创建 n.txt (n=1...20)
原函数在 创建 前面的文件的时候速度比较快
但是 到后面 越来越慢
我记得 以前有一个 叫二分的办法 可以优化这个
但是不知道 vc和delphi怎么写
希望有算法爱好者帮忙看下
希望大家多多帮忙 多多指教
这个菜鸟程序 写出来 太烂了 希望大家多批评

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
把这个if判断写成个小判断函数,然后这些else做成一个小循环,至少这样看起来好些,可惜偶只懂c
2011-1-10 16:38
0
雪    币: 6082
活跃值: (794)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
3
Function NewTxt(mite:integer):integer;
Var
F : Textfile; {定义 F 为 Textfile}
FileName:string;
i:integer;
FilePath:string;

Begin

FilePath:=ExtractFilePath(ParamStr(0));
for i:=1 to 20 do
begin
 FileName:=FilePath+IntToStr(i)+'.txt';
 if not FileExists(FileName) then begin
 FileName:=FilePath+IntToStr(i)+'.txt';
  mite:=i;
  Break;
 end;
end; 


 AssignFile(F,FileName); {将文件名与变量 F 关联}
 ReWrite(F); {创建Txt文档并命名为 “FileName ” }
 Closefile(F); {关闭文件 F}
 Result:=mite;

End;

代码优化后的
期待算法优化
2011-1-10 16:57
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
void find(int a[],int n,int find)
{
   int high,low,middle;
   high=n-1;
   low=0
   middle=n/2;
   while(a[middle]==find&&low==high)
   {
     if(a[middle]<find)
     {low=mdiile+1;middle=(high+low)/2}
     if(a[middle]>find)
     {high=middle+1;middel=(high+low)/2}
   }
   if(high==low)
     没找到。。
   if(a[middle]==find)
     找到。。。
}
2011-1-10 17:35
0
游客
登录 | 注册 方可回帖
返回
//