数据结构与算法
AdamShyly
努力学习
展开
-
C++ 最长子段和
【代码】C++ 最长子段和。原创 2023-07-11 16:01:32 · 230 阅读 · 0 评论 -
C++ 邻接表图 DFS
【代码】C++ 邻接表图 DFS。原创 2023-07-10 03:24:50 · 320 阅读 · 0 评论 -
C++ 最长回文子串
【代码】C++ 最长回文子串。原创 2023-07-08 21:41:35 · 1087 阅读 · 0 评论 -
C++ OJ 输入输出模板
【代码】C++ OJ模板。原创 2023-07-08 20:28:26 · 206 阅读 · 0 评论 -
Python 0/1背包问题
Python 0/1背包问题递归算法 动态规划 算法期末复习原创 2022-06-29 08:20:00 · 170 阅读 · 0 评论 -
Python 矩阵链乘
Python 矩阵链乘递归解法 动态规划 算法期末复习原创 2022-06-29 06:42:24 · 620 阅读 · 0 评论 -
Python 最长公共子序列 LCS LCSS
Python 最长公共子序列 动态规划 算法期末复习原创 2022-06-29 05:10:11 · 555 阅读 · 0 评论 -
Python 数组第二大元素
Python 数组第二大元素 分治法 算法期末复习原创 2022-06-29 01:57:43 · 255 阅读 · 0 评论 -
Python 生成全排列
Python 生成全排列 算法期末复习原创 2022-06-29 00:46:42 · 1056 阅读 · 0 评论 -
Python 棋子移动游戏
Python 棋子移动游戏 算法期末复习原创 2022-06-29 00:01:21 · 727 阅读 · 0 评论 -
求数组前1~k个最小元素
class Solution(object): def quickSort(self, arr, startIndex, endIndex): i = startIndex j = i while j <= endIndex - 1: if arr[j] < arr[endIndex]: temp = arr[j] arr[j] = arr[.原创 2022-05-01 22:11:43 · 118 阅读 · 0 评论 -
Python L型组件填图问题(棋盘覆盖问题)
L 型组件填图问题1.问题描述设 B 是一个 n×n 棋盘,n=2 k,(k=1,2,3,…)。用分治法设计一个算法,使得:用若干个 L 型条块可以覆盖住 B 的除一个特殊方格外的所有方格。其中,一个 L 型条块可以覆盖 3 个 方格。且任意两个 L 型条块不能重叠覆盖棋盘。例如:如果 n=2,则存在 4 个方格,其中,除一个方格外,其余 3 个方格可被一 L 型条 块覆盖;当 n=4 时,则存在 16 个方格,其中,除一个方格外,其余 15 个方格被 5 个 L 型条 块覆盖。2. 具体要原创 2022-04-29 23:18:56 · 1226 阅读 · 0 评论 -
Python 分治法求最大最小元
def mergeMax(arr): length = len(arr) if length == 1: return arr[0]; max1 = mergeMax(arr[0 : length // 2]) max2 = mergeMax(arr[length // 2 : length]) if max1 > max2: return max1 else: return max2def merg原创 2022-04-28 19:39:51 · 1070 阅读 · 0 评论 -
Python 基数排序
def initRadix(radix): radix.clear() for i in range(10): radix.append([])def moveRadixToArr(radix, arr): arr.clear() for i in radix: for j in i: arr.append(j)def radixSort(arr): maxNum = max(arr) di.原创 2022-04-11 11:11:20 · 721 阅读 · 0 评论 -
Python 计数排序
初始化数组的长度大小等于数组元素最大最小值的差值加1def countSort(arr): maxNum = max(arr) minNum = min(arr) res = [0] * (maxNum - minNum + 1) for i in arr: res[i - minNum] += 1 index = 0 arr.clear() for i in res: for j in range(i):原创 2022-04-11 10:29:57 · 755 阅读 · 0 评论 -
Python 桶排序+快排
import mathdef quickSort(arr, i, j): if i >= j: return up = j down = i while j > i: if arr[j] >= arr[down]: j -= 1 elif arr[i] <= arr[down]: i += 1 else: temp.原创 2022-04-10 17:06:25 · 801 阅读 · 0 评论 -
Python 堆排序
def swapNode(arr, node1, node2): temp = arr[node1] arr[node1] = arr[node2] arr[node2] = temp def moveMaxNode(arr, location): maxNode = 0 if arr[location - 1] < arr[location * 2 - 1] or arr[location - 1] < arr[location * 2]:.原创 2022-04-09 18:54:30 · 681 阅读 · 0 评论 -
Python 希尔排序 & 插入排序
插入排序def insertSort(arr): arr.insert(0, 0) for i in range(1, len(arr)): arr[0] = arr[i] for j in range(i + 1): if arr[0] < arr[i - j - 1]: arr[i - j] = arr[i - j - 1] else: .原创 2022-04-09 14:43:45 · 983 阅读 · 0 评论 -
Python 快速排序
def quickSort(arr, i, j): if i >= j: return up = j down = i while i != j: if arr[j] >= arr[down]: j -= 1 continue if arr[i] <= arr[down]: i += 1 continue .原创 2022-04-09 00:49:47 · 326 阅读 · 1 评论 -
Python 归并排序
def merge(arr): if len(arr) == 1: return arr length = len(arr) arr1 = merge(arr[0 : length // 2]) arr2 = merge(arr[length // 2 : length]) temp = [] index1 = 0 index2 = 0 while index1 < len(arr1) and index2 <...原创 2022-04-08 22:41:05 · 223 阅读 · 0 评论