2. b的长度<=a的长度
解题步骤
第一步:生成随机数
生成随机数用random函数,如果要1~9的随机数应该是random(9)+1。我们分三步来生成三种类型的随机数,关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
Randomize; //随机种子
//产生第一组随机数
for i:=1 to 4 do
begin
tmpnum1:= random(9)+1;
ListBox1.Items.Add(IntToStr(tmpnum1));
end;
//产生第二组随机数
for i:=1 to 4 do
begin
tmpnum1:= random(9)+1;
tmpnum2:=random(9)+1;
ListBox1.Items.Add(IntToStr(tmpnum1)+'-'+IntToStr(tmpnum2));
end;
第二步:冒泡法排序
冒泡排序的算法是依次比较相邻的两个数,将小数放在前面,大数放在后面,直到比较最后两个数为止,整个过程中总是小数往前放,大数往后放。根据题目规则,我们不但要考虑到排序过程中两个字符串的大小,还要考虑字符串的长度,字符串变量b的长度小于等于字符串a的长度且字符串b小于字符串a,才能把b放在a的前面,关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
//先读取Listbox的行写给num数组
for i:=0 to 11 do
begin
num[i]:= ListBox1.Items[i] ;
end;
//冒泡法排序
for i := 0 to 10 do
for j := i+1 to 11 do
begin
if (Length(num[j])<=Length(num[i])) and (num[j] < num[i]) then
begin
tmpnum := num[i];
num[i] := num[j];
num[j] := tmpnum;
我的建议>>
在项目开发过程中,我们经常遇到根据需求进行排序的问题,例如汽车牌号排序、图书馆目录排序、产品编号排序等,所以在招聘考试中出现与排序相关的考题一点都不稀奇。在做题时,不能简单地照搬教科书中的方法。
例如很多考生在做这道题时,最先想到的就是生成三个数组,第一个数组存储纯数字,第二个数组存储带有一个“-”的字符串,第三个数组存储带有两个“-”的字符串,分开进行排序再合并输出结果。这种方法是很教科书式的,代码繁多程序臃肿,毫无实用性。