一、每日一题
自己写的代码:
def hui(num):
num = str(num)
num_f = num[::-1]
if num == num_f:
print("True")
else:
print("False")
hui(121)
思路是将原来的数和倒着读的数是一样的话就是真,否则为假。
先转化为字符串然后切片分割变为倒着读的,再进行比较。
二、归并排序
归并排序(Merge Sort)是一种基于分治思想的排序算法,它将待排序数组分成若干个子序列,分别对子序列进行排序,然后再将排好序的子序列合并起来,从而得到最终的有序序列。
基本思路
- 分解:将待排序数组分解成两个子数组,分别对左右两个子数组进行递归排序。
- 合并:将排好序的左右两个子数组合并成一个有序数组。
排序过程
代码实现
def merge(li, low, mid, high):
i = low
j = mid + 1
ltmp = []
while i <= mid and j <= high: # 保证左右两边都有数
if li[i] < li[j]:
ltmp.append(li[i])
i += 1
else:
ltmp.append(li[j])
j += 1
# while 执行完,肯定有一部分没有数字了
while i <= mid: # 右边还有数字
ltmp.append(li[i])
i += 1
while j <=high: # 左边还有数字
ltmp.append(li[j])
j += 1
# 归并完成之后,再将ltmp的值通过切片赋值给li
li[low:high+1] = ltmp
def merge_sort(li, low, high):
if low < high: # 保证有两个元素,实现递归
mid = (low + high) // 2
# 先将左边的数字排序好
merge_sort(li, low, mid)
# 右边的数字再排序好
merge_sort(li, mid+1, high)
# 最后将左右两边的数字归并排序
merge(li,low, mid, high)
li = [2,4,3,7,6,1,9,5,8]
merge_sort(li, 0, len(li)-1)
print(li)
运行结果
三、学习总结
家人们谁懂啊!痛经就是我学习路上最大的绊脚石,根本不想学一点,但还是哄着自己学习了,不得不说这个排序真的挺难的,很绕不好理解,自己得多思考思考,也得多练习练习,但是我又觉得力扣上的题都太难了,写不出来,确实最近过年也是有些松懈了,基本上该走的亲戚也走了,该串的门也串了,还是要收心搞好学习!
“当你决定灿烂,山无拦,海无遮。”