当我阅读第二章“算法”第四版的问题2.2.10时,一个问题困扰着我。这本书说,快速合并算法的结果是不稳定的,我找不到证据的that.Help我,谢谢!
public static void sort(Comparable[] a, int lo, int hi){
if hi <= lo {
return;
}
int mid = lo + (hi - lo) / 2;
sort(a, lo, mid);
sort(a, mid+1, hi);
merge(a, lo, mid, hi);
}
// Why is the resu
我有一个程序性的EDSL,它使用语句块。
这些语句不按特定顺序添加到块中,尽管语句之间可能存在依赖关系。
然而,在EDSL的编译过程中,我需要确保语句是按依赖顺序排序的。
B := A
C := B
E := D
因为并非所有语句都有依赖项,所以没有总顺序(例如,上面的E := D是独立的,可以放置在任何地方)。不存在循环依赖关系,因此列表排序应该是可能的。
我试图通过使用Data.List.sortBy并定义Ordering来破解解决方案,这将返回EQ以表示语句没有依赖项。这对一些例子是有效的,但在一般情况下则不然,例如,订购下列命令没有任何作用:
C := B