网站建设中 优秀账户的标准,旅游网站建设与网页设计,西安做网站那家公司好,公司网站发展策划书算法#xff1a;进制转换、模拟算法#xff0c;枚举算法#xff0c;冒泡排序#xff0c;插入排序#xff0c;选择排序#xff0c;递推算法#xff0c;递归算法#xff0c;贪心算法。
1.进制转换
二进制#xff1a;只包含0和1
八进制#xff1a;只包含0-7
十进制进制转换、模拟算法枚举算法冒泡排序插入排序选择排序递推算法递归算法贪心算法。
1.进制转换
二进制只包含0和1
八进制只包含0-7
十进制只包含0-9
十六进制只包含0-9和 ‘A’-‘F’
十进制转二进制、八进制、十六进制
十进制数 a5
二进制 bbin(a)八进制 coct(a)十六进制 dhex(a)
二进制转十进制、八进制、十六进制
二进制数 a‘101010’
十进制 bint(a,2)八进制 coct(b)十六进制 dhex(b)
八进制转十进制、二进制、十六进制
八进制数 a52
十进制 bint(a,8)二进制 cbin(b)十六进制 dhex(b)
十六进制转十进制、二进制、八进制
十六进制数 a2a
十进制 bint(a,16)二进制 cbin(b)十六进制 doct(b)
总结
由上所知当二进制八进制十六进制之间转换时是以十进制作为媒介。
十进制数int(某一进制数其位数
二进制bin(十进制数数学上采用‘整数部分除2得余数商为0结束将余数从下往上取小数部分乘2取整直到达到精度要求结束按照顺序取’。
八进制hex(十进制数数学上采用‘整数部分除8得余数直到无法整除结束将余数从下往上取小数部分乘8取整直到达到精度要求结束按照顺序取’。
十六进制oct(十进制数数学上采用‘整数部分除16得余数直到无法整除结束将余数从下往上取小数部分乘16取整直到达到精度要求结束按照顺序取’。
其他数学上的转换见:进制之间的数学转换
将二进制数 1011 转换为十进制数
1011二进制 1×2³ 0×2² 1×2¹ 1×2⁰ 8 0 2 1 11十进制
值得注意的是以上转换会出现前缀如果不需要前缀就要用到切片[2:]将前缀删除。
同时除了十进制数为数字类型其他都属于字符串类型在定义时需要加引号。
2.模拟算法 定义通过模拟真实问题的操作步骤逐步解决问题。示例模拟一个简单的ATM取款机的操作流程。 输入取款金额用户账户余额输出取款后账户余额 def atm_withdrawal(balance, amount):if amount balance:return Insufficient balanceelse:balance - amountreturn balancebalance 1000
amount 150
print(atm_withdrawal(balance, amount)) # 输出: 8503.枚举算法
定义通过枚举所有可能的情况来寻找问题的解。示例找出100以内的所有素数。 逐一检查1到100中的每一个数判断它是否为素数。 def is_prime(n):if n 1:return Falsefor i in range(2, int(n**0.5) 1):if n % i 0:return Falsereturn Trueprimes [x for x in range(2, 101) if is_prime(x)]
print(primes) # 输出: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]4.冒泡排序
定义一种简单的排序算法通过重复地遍历待排序列一次比较两个元素如果它们的顺序错误就交换它们的位置。示例对数组[5, 2, 9, 1, 5, 6]进行排序。 经过多次比较和交换最终数组变为[1, 2, 5, 5, 6, 9]。 def bubble_sort(arr):n len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] arr[j1]:arr[j], arr[j1] arr[j1], arr[j]return arrarr [5, 2, 9, 1, 5, 6]
print(bubble_sort(arr)) # 输出: [1, 2, 5, 5, 6, 9]5.插入排序
定义一种简单的排序算法构建有序序列对于未排序数据在已排序序列中从后向前扫描找到相应位置并插入。示例对数组[5, 2, 9, 1, 5, 6]进行排序。 逐步将元素插入到已排序部分最终数组变为[1, 2, 5, 5, 6, 9]。 def insertion_sort(arr):for i in range(1, len(arr)):key arr[i]j i - 1while j 0 and key arr[j]:arr[j 1] arr[j]j - 1arr[j 1] keyreturn arrarr [5, 2, 9, 1, 5, 6]
print(insertion_sort(arr)) # 输出: [1, 2, 5, 5, 6, 9]6.选择排序
定义每一轮从未排序数据中选出最小值将其与未排序部分的第一个元素交换直到所有元素排序完毕。示例对数组[5, 2, 9, 1, 5, 6]进行排序。 逐步选择最小元素并交换最终数组变为[1, 2, 5, 5, 6, 9]。 def selection_sort(arr):for i in range(len(arr)):min_idx ifor j in range(i1, len(arr)):if arr[j] arr[min_idx]:min_idx jarr[i], arr[min_idx] arr[min_idx], arr[i]return arrarr [5, 2, 9, 1, 5, 6]
print(selection_sort(arr)) # 输出: [1, 2, 5, 5, 6, 9]排序一般出现在选择题主要用到的就是内置函数sort和sorted是将数据从小到大排序 。
7.递推算法
定义通过递推关系逐步求解问题。示例斐波那契数列Fibonacci sequence的递推。 F(n) F(n-1) F(n-2)其中F(1) 1, F(2) 1。 def fibonacci(n):if n 0:return []elif n 1:return [0]elif n 2:return [0, 1]fib_sequence [0, 1]for i in range(2, n):fib_sequence.append(fib_sequence[-1] fib_sequence[-2])return fib_sequenceprint(fibonacci(10)) # 输出: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]8.递归算法
定义函数直接或间接调用自身以分解问题为子问题的方式解决问题。示例求解阶乘n!。 n! n × (n-1)!其中0! 1。 def factorial(n):if n 0:return 1else:return n * factorial(n - 1)print(factorial(5)) # 输出: 1209.贪心算法
定义每一步都做出在当前看来最优的选择从而希望得到全局最优解。示例找零问题给定面值为1、2、5元的硬币找出组成金额最少的硬币数量。 对于金额11最优解为551共使用3枚硬币。 def min_coins(coins, amount):coins.sort(reverseTrue)count 0for coin in coins:while amount coin:amount - coincount 1return countcoins [1, 2, 5]
amount 11
print(min_coins(coins, amount)) # 输出: 3