Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 排序由小数点分隔的可变长度整数列表_Algorithm_Sorting - Fatal编程技术网

Algorithm 排序由小数点分隔的可变长度整数列表

Algorithm 排序由小数点分隔的可变长度整数列表,algorithm,sorting,Algorithm,Sorting,我需要一些帮助 我有一个需要排序的分隔整数值列表。例如: 典型(阿尔法?)排序: 1.1.32.22 11.2.4 2.1.3.4 2.11.23.1.2 2.3.7 3.12.3.5 正确(数字)排序: 1.1.32.22 2.1.3.4 2.3.7 2.11.23.1.2 3.12.3.5 11.2.4 我很难弄清楚如何设置算法来对n个十进制分隔符和m个整型字段进行排序 有什么想法吗?这件事以前必须做过。如果你需要更多信息,请告诉我 非常感谢! -丹尼尔做的正是你想要的 比较算法是,以下是手

我需要一些帮助

我有一个需要排序的分隔整数值列表。例如:

典型(阿尔法?)排序:

1.1.32.22

11.2.4

2.1.3.4

2.11.23.1.2

2.3.7

3.12.3.5

正确(数字)排序:

1.1.32.22

2.1.3.4

2.3.7

2.11.23.1.2

3.12.3.5

11.2.4

我很难弄清楚如何设置算法来对n个十进制分隔符和m个整型字段进行排序

有什么想法吗?这件事以前必须做过。如果你需要更多信息,请告诉我

非常感谢! -丹尼尔做的正是你想要的

比较算法是,以下是手册页中的描述:

这个函数的作用是 下列的如果两个字符串相等, 返回0。否则,请找到位置 属性的两个字节之间 在它之前,两个字符串是相等的, 而在它后面有一个 差别。找到最大的 包含 (或开始于,或结束于) 位置。如果其中一个或两个是 空,然后返回strcmp()将返回的内容 已返回(按数字顺序排列) 字节值)。否则,将两者进行比较 数字字符串,其中数字 具有一个或多个前导的字符串 零被解释为它们具有 前面的小数点(以便 特定数字字符串具有更多 前导零位于数字之前 前导零较少的字符串)。 因此,订单是000,00,01, 010,09,0,1,9,10


您真正需要做的就是编写“compare()”,然后将其插入任何排序算法


要编写比较,请从左到右比较每个字段,如果任何字段较高,则返回该参数较高。如果一个参数较短,则假定其余字段为0。

一般解决方案是将此字符串转换为字节数组,然后使用qsort并指定比较函数。

这称为自然排序。看见 例如,在Python中:

def sorted_nicely(strings): 
    "Sort strings the way humans are said to expect."
    return sorted(strings, key=natural_sort_key)

def natural_sort_key(key):
    import re
    return [int(t) if t.isdigit() else t for t in re.split(r'(\d+)', key)]

退房。

这看起来像我以前图书馆的分类系统:PMy环境是C#。如果可能的话,你能提供一个代码示例吗?对不起,我不写C#。。。你的问题不清楚。