代码的Big-O复杂度是多少?

问题描述

for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
            j=j*2;
      }
}

我无法一概而论。

解决方法

如果我们计算程序执行的乘法次数,则复杂度将为from tkinter import * from currency_converter import CurrencyConverter global c c = CurrencyConverter() #test converter # result = c.convert(100,'USD','HKD') # print(result) #create window root = Tk() root.title("EZ Currency Converter") root.geometry("350x200") #create currency option list currencies = ["USD","EUR","JPY","GBP","AUD","CAD","CHF","HKD","SGD","MXN","SEK","PHP","RUB","HUF","LTL","MTL","PLN","ROL","SIT","SKK",] def conversion(clicked,second_clicked,currency_amount): result= c(currency_amount,clicked,second_clicked) final_conversion = Label(root,text= result) final_conversion.grid(row=4,column=1,columnspan=2) #Set what kind of variable to expect clicked = StringVar() clicked.set("USD") second_clicked= StringVar() second_clicked.set("USD") #welcome new users welcome = Label(root,text="Welcome to your new favorite Currency Converter") #create the dropdown options/ input box / button original =OptionMenu(root,*currencies) converted =OptionMenu(root,*currencies) currency_amount= Entry(root,width=30) convert = Button(root,text="Convert",padx=10,pady=10,command=lambda:conversion(clicked.get(),second_clicked.get(),currency_amount.get())) #place widgets welcome.grid(row=0,columnspan=2) original.grid(row=1,column= 1,columnspan=1) converted.grid(row=1,column=2,columnspan=1) currency_amount.grid(row=2,columnspan=2) convert.grid(row=3,columnspan=2) root.mainloop()

您将n * log2(n)乘以内部循环(ni缩放),并且内部循环会重复nj <= n呈指数增长

j

这是1,3,7,15,31,63,127,... = (2^n) - 1 的缩放比例,因此,将2^n的值加倍会使内部循环再次迭代。

n