由于我学会了以XML格式提供XHTML页面,我开始注意到一些奇怪的事情:每当我在Firefox源代码查看器中查看XHTML页面时,DOCTYPE 总是被标记为错误.根据我从鼠标上面得到的工具提示,有问题的错误是"流浪的doctype".根据我的理解,"流浪的doctype"意味着在文档的中间有一个额外的DOCTYPE,它不属于这种情况,这肯定不是这里的情况.
这是一个示例 - 此标记将通过验证,并在所有现代浏览器中正确显示:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--FF source viewer will mark the preceding two lines as an error.-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="content-type"
content="application/xhtml+xml; charset=utf-8" />
<title>Sample XHTML Page</title>
</head>
<body>
<p>This is an example.</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
考虑到这些页面完美地通过验证,并且单个解析错误通常会破坏页面,此错误消息尤其奇怪.
我为一个赋值创建了这个程序,我们需要在它中创建一个Quichesort实现.这是一种混合排序算法,它使用Quicksort直到达到某个递归深度(log2(N),其中N是列表的长度),然后切换到Heapsort,以避免超过最大递归深度.
在测试我的实现时,我发现虽然它通常比常规Quicksort表现更好,但Heapsort一直表现优于两者.任何人都可以解释为什么Heapsort表现更好,在什么情况下Quichesort会比Quicksort 和 Heapsort 更好?
请注意,由于某种原因,赋值将算法称为"Quipsort".
编辑:很显然,"Quichesort"其实等同于 内省排序.
我还注意到我的medianOf3()函数中的逻辑错误导致它为某些输入返回错误的值.这是该功能的改进版本:
def medianOf3(lst):
"""
From a lst of unordered data, find and return the the median value from
the first, middle and last values.
"""
first, last = lst[0], lst[-1]
if len(lst) <= 2:
return min(first, last)
middle = lst[(len(lst) - 1) // 2]
return sorted((first, middle, last))[1]
Run Code Online (Sandbox Code Playgroud)
这会解释算法的性能相对较差吗?
import heapSort # heapSort
import math # log2 (for quicksort depth limit)
def medianOf3(lst):
""" …Run Code Online (Sandbox Code Playgroud)