算法
本专栏基于C语言来实现常见的算法,内附讲解及代码,源代码也可在Github查看:https://github.com/Jeaten/Algorithm
Jeaten
学习使你我快乐
展开
-
快速排序算法 — C++实现
#include <iostream>using namespace std;void swap(int *arr,int low,int high){ int tmp; tmp=arr[low]; arr[low]=arr[high]; arr[high]=tmp;}int partition(int *arr,int low,int high){ int piv; piv=arr[low]; while(low<high)原创 2020-09-24 15:26:53 · 328 阅读 · 0 评论 -
插入排序算法 — C++实现
插入排序将一个记录插入到已经排好序的有序表中,得到一个新的、记录数增加1的有序表排序图示算法评价代码实现原创 2020-09-16 23:51:44 · 194 阅读 · 0 评论 -
选择排序算法 — C++实现
选择排序每次从待排序的元素中选出最小(或最大)的一个元素,然后将该数据放在序列的起始位位置。然后在剩下的未排序元素中重复这一过程,所有的数据都被排序。排序图示算法评价就时间复杂度而言,和冒泡排序相同,都为O(n2)O(n^2)O(n2),但性能上要优于冒泡排序代码实现源代码:#include <iostream>using namespace std;void selectionsort(int *arr,int len){ int i,j,tmp,loc_min;原创 2020-09-16 21:34:24 · 328 阅读 · 0 评论 -
冒泡排序算法 — C++实现
冒泡排序两两比较相邻记录的关键字,如果不符合顺序要求则交换,直到没有不符合顺序要求的为止。排序示意图代码实现源代码:#include <iostream>using namespace std;void bublesort(int *arr,int len){ int i,j,tmp; for(i=0;i<len;i++){ for(j=0;j<len-1;j++){ if(arr[j]>arr[j+1]){原创 2020-09-16 21:06:54 · 4506 阅读 · 1 评论 -
排序算法总结
本文主要讲解常见排序算法,文章目录排序排序算法的稳定性内排序和外排序内排序外排序冒泡排序选择排序插入排序希尔排序堆排序归并排序快速排序排序排序算法的稳定性在一组数中,如果存在两个数据相等,在排序完成后相等的两个数的相对位置不变, 则我们称该排序算法是稳定的。内排序和外排序内排序在排序的整个过程中,待排序的所有记录全部放置在内存中主要包括插入排序、交换排序、选择排序和归并排序外排序由于数据过多,排序过程需要借助外存的排序冒泡排序两两比较相邻记录的关键字,如果不符合顺序要求则交换,直到没原创 2020-09-16 21:01:57 · 128 阅读 · 0 评论 -
斐波那契蛇 — Python实现
题目描述将斐波那契数列按照从大到小,顺时针的顺序存放在n*n的方阵中,n=3的情况如下图所示:解题思路先生成斐波那契数列的数组,让后将数组按照要求存放:存放的时候我们可以一圈一圈地存放当整个一圈遍历完了以后进行下一圈的遍历停止条件为2*圈数小于n(每遍历整个一圈少两行或两列)代码实现n=int(input())def fib(n):#生成斐波那契数组 if n==1: return [1] if n==2: return [1,1]原创 2020-08-21 22:51:49 · 335 阅读 · 0 评论 -
水仙花数的判断 — C++实现
#include <iostream>#include <math.h>using namespace std;int f,s,t,temp;int judge(int n){//拆数 f=n/100; s=(n/10)%10; t=n%10; temp=pow(f,3)+pow(s,3)+pow(t,3); if(temp==n){ return n; }else{ return 0;原创 2020-08-20 09:15:07 · 2382 阅读 · 0 评论 -
N皇后问题的求解 — 回溯法C++实现
读完本文这个小故事,相信你会完全弄懂N皇后问题。故事还得从中国象棋说起…文章目录中国象棋 — 国王背后的女人国王的烦恼 — 安排皇后国王的后宫 — N皇后一句话概括N皇后问题中国象棋 — 国王背后的女人中国象棋中将特别重要,一旦将被吃,则满盘皆输。这里我们暂且把将称为国王吧,国王虽然如此重要,但只能在田字格里移动,而且每次只能移动一格,尽管可以往横线和斜线的方向移动。和他背后的女人 — 皇后相比,国王简直弱到不行:在国际象棋中,皇后是最强大的一枚棋子,可以吃掉与其在同一行、列和斜线的敌方棋子。原创 2020-08-14 18:12:38 · 5568 阅读 · 4 评论 -
01背包问题的动态规划求解及其C++实现
本文讲解01背包问题的动态规划求解,并使用C++进行了实现文章目录01背包问题动态规划01背包问题的动态规划求解01背包问题的动态规划求解-C++实现01背包问题有nnn个物品,这些物品的重量分别为w1,w2,...,wnw_1,w_2,...,w_nw1,w2,...,wn,价值分别为v1,v2,...,vnv_1,v_2,...,v_nv1,v2,...,vn.现给定一个背包,背包的容量为CCC,要求从这个nnn个物品中选择一些物品装进背包,让背包尽可能装满,并使得背包里装的物品的价原创 2020-08-07 15:58:27 · 3162 阅读 · 0 评论 -
二分查找,猜数游戏及其实现
本文介绍二分查找,并使用C++进行实现二分查找二分查找也称为折半查找,即每次查找的时候都从中间位置去查找,其要求线性表必须是顺序存储的(数组)结构,而且顺序表中的元素是有序排列的。如下图就是一种满足折半查找要求的存储结构:二分查找的步骤我们令表中元素按升序排列,则二分查找的步骤为:将中间位置的记录与给定数据进行比较,如果相等,则查找成功否则使用中间位置将表分为两个子表若给定数据大于中间位置元素,则从中间位置以后到结尾位置构成的子表中进行二分查找若给定数据小于中间位置元素,则从开始位置到原创 2020-08-05 21:37:46 · 1057 阅读 · 0 评论 -
最长不重复子串及其C++实现
文章目录题目描述思路讲解C++实现题目描述输入一行字符串,求里面不含有重复字符的最长子串。比如输入字符串为aaabbacccc,可以从任意位置开始截取子字符串,这些子字符串中,不含有重复字符的最长子字符串是bac,它的长度是3。思路讲解最长不重复子串是指该子串中不含有任何重复的元素,且为所有子串中最长的一个。如字母表a-z就是一个不重复的串,为找到满足这样条件的字符串,我们应设定两个位置以计算长度,开始位置和结束位置:初始情况,开始位置为0,并遍历字符串遍历到的字符若没有出现过,则为结原创 2020-08-01 14:48:31 · 3541 阅读 · 0 评论 -
最大公约数的几种求解及代码实现
本文讲解最大公约数的几种求法,并实现了用一行代码求解最大公约数原创 2020-07-30 17:21:39 · 2804 阅读 · 0 评论