lxl16 发表于 2016-11-13 21:03:06

冒泡排序2.0的问题

本帖最后由 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 <> #32 ) and (str <> #0))do //空格是#32,结尾是#0
       begin
         temp:= temp + str;   //依次将字串的每个字符取出来,没空格时
         i:= i + 1 ;

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

       num:= 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 < num) then//若小于第二个,就交换一下
             begin
               m:= num;
               num:= num;
               num:= m;
             end;
         end;
   end;

      //showMessage(IntToStr(n));
   edit1.text:= '';
   For h:= n-1 Downto 1 do
      Edit1.text:= Edit1.text + IntToStr(num) + ' ';
end;

lxl16 发表于 2016-11-14 12:19:59

不知是不是   While ( i <= Length(str) )do    这一行,之前搞了<   而不是   <=
页: [1]
查看完整版本: 冒泡排序2.0的问题