pascal语言插入排序问题
发布网友
发布时间:2024-10-12 01:29
我来回答
共3个回答
热心网友
时间:2024-11-16 18:23
var
i, j, k, l: Integer; // 循环变量
a: array[0..9] of Integer; // 数组
tmp: Integer; // 临时变量
begin
for i := 0 to 9 do
a[i]:= 0; // 清空数组 for i := 0 to 9 do // 循环读入数值
begin
Readln(tmp); // 读数值 l:= i;
for j := 0 to i - 1 do // 开始循环比较
if tmp > a[j] then // 找到比读入大的数
begin
l:= j; // 记录下标
Break; // 退出比较
end; for k := i - 1 downto l do
a[k + 1]:= a[k]; // 所有元素后移一位
a[l]:= tmp; // 当前数值插入数组
end; writeln; for i := 0 to 9 do
Writeln(a[i]); readln;end.
热心网友
时间:2024-11-16 18:22
就是枚举每个数,向前寻找要插入的位置插入。例如 7 3 2 5 4 6
第一次 3 7 2 5 4 6
第二次 2 3 7 5 4 6
第三次 2 3 5 7 4 6
第四次 2 3 4 5 7 6
第五次 2 3 4 5 6 7
不过我比较喜欢用冒泡,代码比较短又好理解。 for i:=1 to n do for j:=i+1 to n do if a[i]>a[j] then begin t:=a[i];a[i]:=a[j];a[j]:=t;end;
热心网友
时间:2024-11-16 18:25
就是for i::=1 to n do将第i个元素插入到前i-1个元素中。PS:LS的是选择排序,别误导别人了。