冒泡排序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. 新人 看不懂啊 哪位朋友给看下啊 While ( i < Length(str) ) do
这里应该是<=的。
页:
[1]