字符串排序等算法
2008-09-25 14:13
162 查看
15,1,5,10,13,14,50,4,55,8,67,68,69,3,12,57,70,74 字符串,排序后再把连续数字用-连接在一起,结果为:1,3-5,8,10,12-15,50,55,57,67-70,74
function NumberSort(List: TStringList; Index1, Index2: Integer): Integer;
var
Value1,Value2:Integer;
begin
Value1:=StrToInt(List[Index1]);
Value2:=StrToInt(List[Index2]);
if Value1<Value2 then
Result:=-1
else if Value1>Value2 then
Result:=1
else
Result:=0;
end;
procedure TForm1.btn3Click(Sender: TObject);
var
strTemp:string;
strs:TStringList;
i,j:integer;
begin
strTemp:='15,1,5,10,13,14,50,4,55,8,67,68,69,3,12,57,70,74';
strs:=TStringList.Create;
strs.Delimiter:=',';
strs.DelimitedText:=strTemp;
strs.CustomSort(NumberSort);
i:=1;
strTemp:=strs[0];
while true do
begin
if i>=strs.Count then
break;
if StrToInt(strs[i])-StrToInt(strs[i-1])=1 then
begin
for j:=i to strs.Count-2 do
if StrToInt(strs[j+1])-StrToInt(strs[j])=1 then
continue
else
break;
i:=j;
strTemp:=strTemp+'-'+strs[i];
end else
strTemp:=strTemp+','+strs[i];
inc(i);
end;
Memo1.Lines.Text:=strTemp;
strs.Free;
end;
function NumberSort(List: TStringList; Index1, Index2: Integer): Integer;
var
Value1,Value2:Integer;
begin
Value1:=StrToInt(List[Index1]);
Value2:=StrToInt(List[Index2]);
if Value1<Value2 then
Result:=-1
else if Value1>Value2 then
Result:=1
else
Result:=0;
end;
procedure TForm1.btn3Click(Sender: TObject);
var
strTemp:string;
strs:TStringList;
i,j:integer;
begin
strTemp:='15,1,5,10,13,14,50,4,55,8,67,68,69,3,12,57,70,74';
strs:=TStringList.Create;
strs.Delimiter:=',';
strs.DelimitedText:=strTemp;
strs.CustomSort(NumberSort);
i:=1;
strTemp:=strs[0];
while true do
begin
if i>=strs.Count then
break;
if StrToInt(strs[i])-StrToInt(strs[i-1])=1 then
begin
for j:=i to strs.Count-2 do
if StrToInt(strs[j+1])-StrToInt(strs[j])=1 then
continue
else
break;
i:=j;
strTemp:=strTemp+'-'+strs[i];
end else
strTemp:=strTemp+','+strs[i];
inc(i);
end;
Memo1.Lines.Text:=strTemp;
strs.Free;
end;
相关文章推荐
- [算法] 关于algs4 MSD.java 高位优先的字符串排序 的逐行代码解释
- 【心血】算法清单 & 应用(含搜索,动态规划,排序,数据结构,最短路,二分,字符串,其他)
- 九度 Online Judge 算法 刷题 题目1066:字符串排序
- 按照拼音对数组中的中文字符串排序的算法
- 设计一个算法将两个字符串合并按字母排序
- [C/C++]_[初级]_[标准库之几种算法库函数的运用,如字符串查找(字符个数查找)、分隔、删除、替换、排序、字符交换位置、大小写转换等等]
- JAVA基础算法——将字符串按照字典倒序排序并输出
- JAVA-从题目看算法,将输入字符串进行排序并输出
- 确定两个字符串通过重新排序是否可以相同的算法
- 九度 Online Judge 算法 刷题 题目1054:字符串内排序
- 算法理解——字符串根据字典值排序
- 设计一个算法将两个字符串合并按字母排序
- 一步一步写算法(字符串由小到大排序)
- JAVA基础算法——将字符串按照字典倒序排序并输出
- 算法记录:MSD基数排序 + qsort 对字符串排序
- 设计一个算法将两个字符串合并按字母排序
- 第8周项目2.2-4 试编写算法实现将字符串S中所有字符颠倒过来重新排序 void Trans(SqString *&s, char c1, char c2);
- iOS开发·必会的算法操作:字符串数组排序+模型对象数组排序
- 用冒泡排序的算法对输入的字符串进行排序
- iOS开发·必会的算法操作:字符串数组排序+模型对象数组排序