最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

算法初介紹

2023-04-26 23:21 作者:蕪湖小量化  | 我要投稿

import unittest
# 算法的五個特性
# 1.輸入 2.輸出 3.明確性 4.有限性 5.有效性

# 算法的的時間復(fù)雜度
# 1.事后統(tǒng)計
# 2.事前分析
# 可以使用步數(shù)來描述程序的運行時間


def find_max(arr):
? ?max_num = arr[0]
? ?steps = 0
? ?for i in range(1, len(arr)):
? ? ? ?steps += 1
? ? ? ?if max_num < arr[i]:
? ? ? ? ? ?max_num = arr[i]
? ?print("{}次".format(steps))


ar = [1, 3, 5, 6, 8, 90]
find_max(ar)
# 可見上面的式子最長為五步

# 常見的時間復(fù)雜度順序
# 1. O(1):常數(shù)時間復(fù)雜度,是最優(yōu)秀的時間復(fù)雜度,因為它的運行時間不受輸入規(guī)模的影響。
# 2. O(log n):對數(shù)時間復(fù)雜度,對于大規(guī)模的數(shù)據(jù)處理仍然非??焖?。例如,二分搜索和平衡樹在大量數(shù)據(jù)中仍然可以快速定位元素。
# 3. O(n):線性時間復(fù)雜度,通常是處理數(shù)據(jù)的最優(yōu)解。例如,計數(shù)排序和基數(shù)排序就是線性時間復(fù)雜度的排序算法。
# 4. O(n log n):線性對數(shù)時間復(fù)雜度,通常是排序算法的最優(yōu)解。例如,歸并排序和快速排序都是O(n log n)的時間復(fù)雜度。
# 5. O(n^2):平方時間復(fù)雜度,通常只能處理小型數(shù)據(jù)集。例如,選擇排序和插入排序都是O(n^2)的時間復(fù)雜度。
# 6. O(2^n):指數(shù)時間復(fù)雜度,通常只能處理非常小型的數(shù)據(jù)集。例如,窮舉算法和回溯算法都是指數(shù)時間復(fù)雜度的算法。

# 算法的空間復(fù)雜度是指算法需要使用的內(nèi)存空間。
# 通常使用大O表示法來表示算法的空間復(fù)雜度,例如O(1)、O(n)、O(n^2)等等。
# 與時間復(fù)雜度類似,空間復(fù)雜度也是用來衡量算法效率的重要指標(biāo)。但是需要注意的是,
# 空間復(fù)雜度并不是唯一的衡量標(biāo)準(zhǔn),因為不同的算法可能會有不同的空間需求和時間需求,需要綜合考慮。

url1 = 'www.'+'python'+'.com'
# url1的效率最低 因為使用+后進(jìn)行字符串的連接 生成的新字符串會重新請求內(nèi)存
url2 = '.'.join(['www', 'python', 'com'])
url3 = '{}{}{}'.format('www.', 'python', '.com')
print((url1, url2, url3))

# `join()`是Python中的一個字符串方法,用于將一個可迭代對象(如列表、元組等)中的元素連接成一個字符串。
# 例如:`"-".join(["a", "b", "c"])`會返回字符串`"a-b-c"`。
# 這個方法的語法如下:`separator.join(iterable)`,其中`separator`是連接元素的分隔符,`iterable`是需要連接的可迭代對象。
# 需要注意的是,`join()`方法只能用于字符串類型的元素,如果列表中包含非字符串類型的元素,需要先進(jìn)行類型轉(zhuǎn)換。
# 例如:`"-".join([1, 2, 3])`會報錯,需要先將列表中的數(shù)字轉(zhuǎn)換為字符串類型。

# 挑戰(zhàn):使用程序來實現(xiàn)用戶輸入的月份有多少天
# what?
# 1.有31天的月份1,3,5,7,8,10,12
# 2.確定30天的月份 4,7,9,11
# 3.閏年2月是28天
# 4.非閏年的2月是28天
# 5.如果年份能被4整除則為閏年
# how?


# def cal(year, month):
# ? ? list_1 = [1, 3, 5, 7, 8, 10, 12]
# ? ? list_2 = [4, 7, 9, 11]
# ? ? for lis in list_1:
# ? ? ? ? if int(month) == lis:
# ? ? ? ? ? ? print('{}-{}有31天'.format(year, month))
# ? ? for lis in list_2:
# ? ? ? ? if int(month) == lis:
# ? ? ? ? ? ? print('{}-{}有30天'.format(year, month))
# ? ? if int(month) == 2:
# ? ? ? ? if int(year) % 4 == 0:
# ? ? ? ? ? ? print('{}-{}有29天'.format(year, month))
# ? ? ? ? else:
# ? ? ? ? ? ? print('{}-{}有28天'.format(year, month))
#
#
# y, m = input("請輸入要查詢的年份和月份,使用-分隔,如2023-8:").split('-')
# cal(y, m)


# 對編寫的代碼進(jìn)行單元測試
# 使用unittest測試程序的步驟如下:
# 1. 導(dǎo)入unittest模塊。
# 2. 創(chuàng)建一個繼承自unittest.TestCase的測試類,該類中包含多個測試方法。
# 3. 在每個測試方法中編寫測試代碼。
# 4. 使用unittest.main()方法運行測試


def cal(year, month):
? ?list_1 = [1, 3, 5, 7, 8, 10, 12]
? ?list_2 = [4, 7, 9, 11]
? ?for lis in list_1:
? ? ? ?if int(month) == lis:
? ? ? ? ? ?return 31
? ?for lis in list_2:
? ? ? ?if int(month) == lis:
? ? ? ? ? ?return 30
? ?if int(month) == 2:
? ? ? ?if int(year) % 4 == 0:
? ? ? ? ? ?return 29
? ? ? ?else:
? ? ? ? ? ?return 28


class TestCal(unittest.TestCase):

? ?def test_january(self):
? ? ? ?self.assertEqual(cal(2020, 1), 31)

? ?def test_february(self):
? ? ? ?self.assertEqual(cal(2020, 2), 29)

? ?def test_march(self):
? ? ? ?self.assertEqual(cal(2020, 3), 31)

? ?def test_april(self):
? ? ? ?self.assertEqual(cal(2020, 4), 30)


if __name__ == '__main__':
? ?unittest.main()

# 測試通過

算法初介紹的評論 (共 條)

分享到微博請遵守國家法律
富宁县| 门源| 宜阳县| 贺州市| 柳江县| 汝南县| 惠安县| 喀喇沁旗| 天峨县| 凤阳县| 五大连池市| 进贤县| 肇源县| 龙井市| 台北县| 平远县| 虎林市| 新乡县| 景泰县| 金溪县| 体育| 蓝山县| 吉林省| 安宁市| 大庆市| 上饶县| 台江县| 卢湾区| 太和县| 施甸县| 抚松县| 扶绥县| 应用必备| 衡南县| 鄯善县| 虎林市| 阿拉善盟| 雷州市| 白河县| 高雄县| 克东县|