鱼C论坛

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

冒泡排序2.0的问题

[复制链接]
发表于 2016-11-13 21:03:06 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lxl16 于 2016-11-14 12:18 编辑

若是给的数字中有大于9的两位数,就没问题

若都是小于10的数字,就会在点按钮后,一个一个的不断变少,

不知什么原因,请高手指点一下,谢谢
=================================================
procedure TForm1.BitBtn1Click(Sender: TObject);
var
   str,temp: string;
   i,h,m,n ,k,j: Integer;
   num: Array of Integer;

begin
   str:= Trim(Edit1.Text) ;
   SetLength(num, Length(str));
   //ShowMessage(str);

   i:= 1;
   j:= 1;

   While ( i <= Length(str) )  do  //Length返回字符串的长度
   begin
     While (( Str[i] <> #32 ) and (str[i] <> #0))do //空格是#32,结尾是#0
       begin
           temp:= temp + str[i];   //依次将字串的每个字符取出来,没空格时
           i:= i + 1 ;

       end;   //遇空格时,退出循环,以识别空格隔开的字串,并独立取出来

       num[j]:= StrToInt(temp) ;
       i:= i + 1 ;   //加一看是不是能跳过空格的位置
       j:= j + 1;
       temp:= '';
   end;

   //下边进行冒泡排序
     n:= j;
     For h:=1 to n-1 do
     begin
         k:= n - h;
         For j:=1 to k do //让交换进行多次,以便排好序
         begin
             If (num[j] < num[j+1]) then  //若小于第二个,就交换一下
             begin
                 m:= num[j];
                 num[j]:= num[j+1];
                 num[j+1]:= m;
             end;
         end;
     end;

        //showMessage(IntToStr(n));
     edit1.text:= '';
     For h:= n-1 Downto 1 do
        Edit1.text:= Edit1.text + IntToStr(num[h]) + ' ';
end;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-14 12:19:59 | 显示全部楼层
不知是不是     While ( i <= Length(str) )  do    这一行,之前搞了  <   而不是   <=
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 05:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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