孚日大家纺 发表于 2012-3-9 11:28:29

冒泡排序V2的问题

大家好,我按视频上代码自己做了个冒泡排序V2发现一个问题,输入33 23 4这样最后一位是个位数的时候排序结果会把变成23 33而把4给弄没了,哪位朋友给说说问题出在哪啊
我在清空temp前加上ShowMessage(temp)试了下发现在这生成数组的时候就已经把最后的4给弄没了。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;

type
TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Edit1: TEdit;
    Label1: TLabel;
    procedure BitBtn1Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,j,k: Integer;
n,l,m: Integer;
str: String;
num: Array of Integer;
temp: String;

begin
str:= Trim(Edit1.Text);    //去掉首尾空格
SetLength(num, Length(str));
j:= 1;
i:= 1;

While ( i < Length(str) ) do
begin
    While ( (str <> #32) And (str <> #0) ) do
    begin
      temp:= temp + str;
      i:= i + 1;
    end;

    num:= StrToInt(temp);
    j:= j + 1;
    i:= i + 1;
    temp:= '';
end;
//下边是进行冒泡排序算法,事实上应该封装成函数更好
n:= j;
For l:=1 to n-1 do
begin
    k:= n - l;
    For j:=1 to k do
    begin
      If (num < num) then
      begin
      m:= num;
      num:= num;
      num:= m;
      end;
    end;
end;

Edit1.Text:= '';
For l:= n-1 DownTo 1 do
    Edit1.Text:= Edit1.Text + IntToStr(num) + ' ';

end;

end.

流星一瞬间 发表于 2012-3-9 22:59:23

新人 看不懂啊

孚日大家纺 发表于 2012-3-12 12:01:05

哪位朋友给看下啊

岁〆月有√声 发表于 2012-3-21 11:42:30

While ( i < Length(str) ) do
这里应该是<=的。
页: [1]
查看完整版本: 冒泡排序V2的问题