
算法
文章平均质量分 72
喵喵淼
这个作者很懒,什么都没留下…
展开
-
博弈论【算法】
定义博弈论主要研究公式化了的激励结构间的相互作用,是研究具有斗争或竞争性质现象的数学理论和方法。博弈论考虑游戏中的个体的预测行为和实际行为,并研究它们的优化策略。如囚徒困境。在算法竞赛中出现的博弈论题目通常是ICG(公平组合游戏)的,有如下特征:有两名选手两名选手交替操作,每次一步,每步都是在有限的合法集合中选取一种进行。在任何情况下,合法操作只取决于情况本身,与选手无关。游戏的败北条件为:当某位选手需要进行操作时,当前没有任何可以执行的合法操作,则该选手败北。巴什博弈一堆n个物品,两个原创 2021-01-14 16:03:55 · 3159 阅读 · 1 评论 -
堆排序【C语言】
堆排序基本思想利用堆(小顶堆)进行排序的过程,首先把待排序序列(R1,R2,…,Rn)转换成一个堆。这时,根结点具有最小值,输出根结点(可以将其与堆数组中的末尾元素交换,此时末尾元素就是最小值),然后将剩下的n-1个结点重新调整为一个堆。反复进行下去,直到剩下一个结点为止。所以实现堆排序主要需要解决两个问题:1.如何将n个元素的序列建成堆。2.输出堆顶元素后,怎样调整剩余n-1个元素,使其关键字成为一个新堆。首先讨论问题2的调整方法:当输出一个堆顶元素后,将最后一个元素送入堆顶,此时堆被破坏。将原创 2021-01-14 09:13:30 · 432 阅读 · 0 评论 -
简单选择排序【C语言】
选择排序基本思想首先,在待排序序列中选择出最小的记录,然后将这个最小的数据元素与第一个记录交换,第一个记录到位,这是第一趟排序;第二趟。就是从第二个记录到最后一个记录中选择最小的记录,之后将最小的记录与第二个记录交换,第二个记录到位;以此类推,进行n-1趟,就可以得到一个有序序列。空间复杂度:O(1)时间复杂度:O(n^2)稳定性:稳定代码实现#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100void原创 2020-12-13 15:32:19 · 550 阅读 · 1 评论 -
冒泡排序与快速排序【C语言】
冒泡排序基本思想对有n个记录的序列进行冒泡排序,首先将第一个数字与第二个数字进行比较,若为逆序,则将两个数字的顺序交换。然后比较第二个数字与第三个数字,若为逆序,则将两个数字的顺序交换…依此类推,经过第一轮排序后,最大的数字将“下沉”到最后,每趟的比较次数依次减少。经过n-1轮排序,将得到一个递增的序列。空间复杂度:O(1)时间复杂度:O(n^2)稳定性:稳定代码实现n个记录总共要进行n-1趟排序,第i趟的比较次数为n-i次。可以使用双层循环,外层循环控制第几轮排序,内层控制每一轮比较的次数原创 2020-12-01 16:46:06 · 1216 阅读 · 1 评论 -
【leetcode】拥有最多糖果数的孩子
题目:给你一个数组 candies 和一个整数 extraCandies,其中 candies[ i ] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有最多的糖果。注意,允许有多个孩子同时拥有最多的糖果数目。示例1:输入:candies = [2,3,5,1,3],extraCandies = 3输出:[true,true,true,false,true]语言:java思路:1.本来拥有最多糖果数的孩原创 2020-09-15 22:48:52 · 206 阅读 · 0 评论 -
直接插入排序与希尔排序【C语言】
直接插入排序基本思想在已经排好序的子集的基础上,每一步将下一个待排序的记录有序地插入到已排好序的记录子集中。可以设置一个监视哨r[0],始终存放待插入的记录,还可以防止越界。空间复杂度:O(1)时间复杂度:最好情况:O(n) 最坏情况:O(n^2)算法稳定性:稳代码实现这里不设置监视哨。#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100void InsertSort(); //插入排序void I原创 2020-11-19 17:08:12 · 377 阅读 · 1 评论