![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础
ReganYue
一个没有真才实学的男孩。文质彬彬又如何,学富五车又怎样,若不能因真理而得自由,因真相而得分享,知识越多反而越昏庸。
展开
-
谈一谈最小二叉堆的几种操作
谈一谈最小二叉堆的几种操作0x00 前言今天我们来谈一谈最小二叉堆的三种操作——插入、删除、更新。先来介绍一下什么是最小二叉堆,最小二叉堆也是一棵二叉树,最小二叉堆就是父节点一定比子节点小,也就是所有的父节点都比它的左右子节点要小。关于怎么建堆,我这里就不细说了,因为是一颗完全二叉树,所以我们可以用数组来存储最小二叉堆。我们这里使用堆{6,2,3,4,5,6,7}。我们将最小二叉堆所在数组的第一个值设置为堆内元素的个数,这样能给后续操作带来便利。0x01 插入操作void insert( int原创 2021-10-29 17:27:17 · 379 阅读 · 0 评论 -
【C语言】排序算法之选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最...原创 2019-03-04 11:14:09 · 641 阅读 · 0 评论 -
【C语言】排序之插入排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到 {\displaystyle O(1)} {\displaystyle O(1)}的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素...原创 2019-03-03 10:02:34 · 587 阅读 · 0 评论 -
【C语言】排序算法之冒泡排序
冒泡排序(Bubble Sort):是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。(维基百科)冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同...原创 2019-03-02 21:39:05 · 443 阅读 · 0 评论 -
【JAVA】递归求组合数算法
public class h { //在n个球中,任意取出m个(不放回),求有多少种取法。 public static int f(int n,int m){ //n个取m个。 if(n<m) return 0; if(n==m) return 1; if(m==0) return 1; return f(n-1,m-1)+f(n-1,m); } public static void ma原创 2021-01-15 11:07:59 · 2889 阅读 · 0 评论 -
【C】用【【尾递归】】实现求两个整数的最大公约数和最小公倍数
#include<stdio.h>int gcd(int m, int n) { if(m%n==0) return n; else return gcd(n,m%n); /*尾递归*/}int lcm(int m,int n){ return m*n/gcd(m,n); /*求最小公倍数用两数 之积除以两数的最大公约数*/}int main() { in...原创 2020-05-04 15:15:12 · 1131 阅读 · 0 评论 -
【枚举】完美立方
Description形如 a3=b3+c3+d3的等式被称为完美立方。例如 123=63+83+103。编写一个程序,对任给的正整数 N (N≤100) ,寻找所有的四元组 (a,b,c,d),使得a3=b3+c3+d3,其中a,b,c,d大于1,小于等于N,且b<=c<=d。Input多组测试数据,每组测试数据在一行中输入一个正整数 N (N≤100)。Output每组...原创 2019-04-09 14:40:43 · 837 阅读 · 0 评论 -
【枚举】【C/C++】生理周期
问题定义:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(...原创 2019-04-09 15:24:44 · 1251 阅读 · 0 评论 -
排序算法之归并排序
归并排序(英语:Merge sort,或mergesort),是建立在归并操作上的一种有效的排序算法,效率为 {\displaystyleO(n\log n)} {\displaystyle O(n\logn)}(大O符号)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide andConquer)的一个非常典型的应用,且各层分治递归可以同时进行。#include&...原创 2019-06-15 10:06:36 · 568 阅读 · 0 评论