合并排序代码. if __name__==“__main__”:
时间: 2024-09-24 19:13:53 浏览: 43
在Python程序中,`if __name__ == "__main__":`是一个常见的模块导入结构,通常放在文件的底部。当这个条件满足时,即如果当前脚本被直接运行而不仅仅作为模块导入时,会执行这部分代码。这样做可以避免在导入该模块时意外触发其内部函数的行为。
例如,在合并排序的代码中,你可能会在这里放置一些测试用例或主函数,以便在运行整个脚本时进行测试和演示:
```python
def merge_sort(arr):
...
def merge(left, right):
...
# 如果脚本被直接运行
if __name__ == "__main__":
# 测试数据
test_array = [4, 2, 9, 6, 1, 5]
sorted_array = merge_sort(test_array)
print("Sorted array:", sorted_array)
# 或者提供用户输入并排序
user_input = input("Enter numbers separated by comma to sort: ")
unsorted_numbers = [int(n) for n in user_input.split(",")]
sorted_numbers = merge_sort(unsorted_numbers)
print("Sorted numbers:", sorted_numbers)
相关问题
def main(): for j in range(1,160): work_text(page=j) de = pd.DataFrame(data) de1= pd.DataFrame(range(1,len(df)+1),colums=['排序']) pd.concat([de1,df],axis=1).to_csv('work1.csv',encoding='utf-8-sig',index=None) #脚本运行 if __name__=='_mian_': main()
这是一段 Python 代码,主要使用了 pandas 库对网页上的数据进行爬取和处理,最终将结果保存到 CSV 文件中。在 main() 函数中,使用 for 循环遍历每一页的数据,调用 work_text() 函数来处理每一页的数据,并将处理后的结果存储在 data 变量中。然后使用 pandas 库将 data 变量转换为 DataFrame 对象,再创建一个序号列,将序号列与数据列合并,并使用 to_csv() 方法将结果保存到 CSV 文件中。在代码的最后,使用 if __name__=='_mian_': main() 来运行整个脚本。
解释代码class Kruskal: def __init__(self, n, m): self.n = n self.m = m self.e = [] self.s = [] self.u = UnionFindSet(1, self.n) def graphy(self): for i in range(self.m): x, y, length = list(map(int, input().split())) self.e.append(Edge(x, y, length)) self.e.sort(key=lambda e: e.length) self.u.init() def run(self): for i in range(self.m): if self.u.unite(self.e[i].x, self.e[i].y): self.s.append(self.e[i]) if self.u.is_one(): break def print(self): print(f'构成最小生成树的边为:') edge_sum = 0 for i in range(len(self.s)): print(f'边 < {self.s[i].x}, {self.s[i].y} > = {self.s[i].length} ') edge_sum += self.s[i].length print(f'最小生成树的权值为:{edge_sum}') def main(): n, m = list(map(int, input().split())) kruskal = Kruskal(n, m) kruskal.graphy() kruskal.run() kruskal.print() if __name__ == '__main__': main()
这段代码实现了 Kruskal 算法,用于求解无向带权连通图的最小生成树。Kruskal 算法的基本思路是:按照边的权值从小到大的顺序,依次加入图中,如果加入某条边会形成环,则不加入该边,直到加入了 n-1 条边或者所有边都加入了为止。
类 Kruskal 的初始化函数 __init__ 接收两个参数:节点数 n 和边数 m。接着定义了三个列表:e 存储所有的边,s 存储最小生成树的边,u 存储并查集数据结构。
函数 graphy 用于输入边的信息,并将所有边按照权值从小到大排序。同时,对并查集进行初始化。
函数 run 用于执行 Kruskal 算法。遍历所有边,如果两个节点不在同一个集合中,则将这条边加入最小生成树中,并合并两个节点所在的集合。如果最小生成树中的边数已经达到 n-1 条,则停止遍历。
函数 print 用于输出最小生成树的边和权值。
最后,函数 main 用于读入节点数和边数,创建 Kruskal 类的对象,执行算法并输出结果。
需要注意的是,Kruskal 算法的核心在于并查集的实现,因此需要先实现并查集数据结构。同时,Kruskal 算法的时间复杂度为 O(mlogm),其中 m 为边数,因此对于大规模的图来说,算法的效率可能较低。
阅读全文