冒泡排序算法

var
	num: array of Integer;    // 打比方  array里记录的是[5, 3, 2, 4, 1]   =>要的到的结果为[1, 2, 3, 4, 5]
	i: Integer = 1;           // i记录要比较数的位置
	{首先明白字符串,比如'12345'  要得到1那么就是s[1], 取5那么就是s[5] , 取数组跟取字符串一样 那么就需要取出每位数字比较}
{$R *.fmx}

procedure TForm2.Button1Click(Sender: TObject);
var
	l, j, k, n: Integer;
begin
	for l := 1 to i - 1 do           // 这个是比较的总次数,如果有四位数则只比较3次
	begin
		k := i - l;                    // k记录比较的那个数的前一个数的位置 比如 现在比较的是最后一位1,那么当时的k就是倒数第二位4的位置
		for j := 1 to k do             // j记录从字符串第一个到比较的数的前两位的位置,一直循环
		begin
			if (num[j] < num[j + 1]) then  //  这里面就是比较的内容啦   如果前一位小于后一位
			begin
				n := num[j];                // 则n 为小的那位数
				num[j] := num[j + 1];       // 此时,小的那位数存放下一位数
				num[j + 1] := n;            // 下一位数存放小的那位数,这样顺序就调过来了
			end;                          // 一直循环,直到比较完位置。
		end;
	end;
	Label1.text := '';                   
	for l := i - 1 downto 1 do
		Label1.text := Label1.text + inttostr(num[l]) + ' ';   //输出
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
	Label1.Text := Label1.Text + ' ' + Edit1.text;
	num[i] := strtoint(Edit1.text);
	i := i + 1;
	Edit1.text := '';
	Edit2.text := inttostr(i);
end;

 

var
    a:array[1..4] of integer;
    i, j, temp, n:integer;
begin
   read(n);
   for i := 1 to n do read(a[i]);
   for i := 1 to n do
       for j := 1 to n-i do
           if a[j] > a[j + 1] then
               begin
                   temp := a[j];
                   a[j] := a[j + 1];
                   a[j+1] := temp;
               end;
    for i:= 1 to n do write(a[i]);
end;

 

posted @ 2015-11-19 20:19  王云盼  阅读(209)  评论(0编辑  收藏  举报