|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大家好,我按视频上代码自己做了个冒泡排序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[i] <> #32) And (str[i] <> #0) ) do
begin
temp:= temp + str[i];
i:= i + 1;
end;
num[j]:= 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[j] < num[j+1]) then
begin
m:= num[j];
num[j]:= num[j+1];
num[j+1]:= m;
end;
end;
end;
Edit1.Text:= '';
For l:= n-1 DownTo 1 do
Edit1.Text:= Edit1.Text + IntToStr(num[l]) + ' ';
end;
end. |
|