
初级算法学习
文章平均质量分 55
整理并分享近期的算法学习
Utozyz
这个作者很懒,什么都没留下…
展开
-
八大排序算法(C++实现)
七大排序算法1.前言2.内容3.总结4.更新日志1.前言2022.5.15 总结整理了之前学的排序算法的实现语言选择的是C++(计数排序太水了,没有整理,基数排序自认为学的不太扎实,后续可能会补)(蒟蒻,轻喷,欢迎指正)2.内容#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>using namespace std;#include <vector>#include <algorithm>#i原创 2022-05-15 18:31:44 · 420 阅读 · 0 评论 -
归并排序详解(递归与非递归(迭代))
归并排序详解1.前言2.内容递归非递归(迭代版本)3.总结4.更新日志1.前言归并排序是基于比较的排序中,最好的三个之一(其余两个为:堆排序、快速排序)时间复杂度为 O(N*logN)空间复杂度为 O(N)2.内容递归void Partition(vector <int>& c, int L, int M, int R) //归并排序的合并过程{ //开辟一个额外数组,存储排序后的数组 vector <int> ex(R - L + 1); /原创 2022-05-15 16:18:13 · 611 阅读 · 0 评论 -
素数筛法(传统普通、朴素筛法、埃式筛法、欧拉筛法(线性筛))
素数筛法(普通、朴素筛法、埃式筛法、欧拉筛法)1.题目2.分析3.代码传统普通朴素筛法埃式筛法欧拉筛法(线性筛)4.总结5.更新日志1.题目题目链接题目描述**输入一个自然数N,按质数定义从小到大输出1~N(包含N)中所有的质数**输入描述:输入一行,包含一个整数N1 <= N <= 2000输出描述:输出一行,包含所有的质数,按照从小到大的顺序输出,以空格隔开。示例1输入20输出2 3 5 7 11 13 17 192.分析筛掉合数剩下的即为素数,下面用四种方原创 2022-05-08 18:36:31 · 2245 阅读 · 3 评论 -
堆排序算法
堆排序算法1.前言2.内容1.简单实现2.用对数器检验3.总结4.更新日志1.前言堆排序是时间复杂度 比 冒泡、选择、插入 都小的排序算法时间复杂度为0(N2)在学习堆排序,之前首先应当对二叉树有基本的了解,明白完全二叉树、大根堆等基本定义,这样有助于理解堆排序。初学补充:1.完全二叉树定义: 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。如下图:原创 2022-04-28 18:55:10 · 629 阅读 · 0 评论 -
插入排序(直接插入排序)
插入排序1.前言2.实现步骤优化:拆半插入3.总结4.更新日志1.前言工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。2.实现步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素看成是未排序序列。从头到尾依次遍历未排序序列,将遍历到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)代码:#include <stdio.h>void Ins原创 2022-03-07 21:03:30 · 623 阅读 · 0 评论 -
双向选择排序
双向选择排序1.前言2.实现3.总结4.更新日志1.前言根据双向冒泡排序改编,大数从左向右移动,小数从右向左移动2.实现#include <stdio.h>#include <stdlib.h>#include <time.h>#define NUM 7#define swap(a,b) {int t=a;a=b;b=t;} //宏定义交换函数//void SelectionSort1(int* a) //选择排序1//{// int i,原创 2022-02-27 22:22:57 · 850 阅读 · 0 评论 -
选择排序算法
选择排序1.前言2.实现3.总结4.更新日志1.前言较为简单,在实现过程中不断地进行,选择一个元素,并与后面的所有元素依次比较2.实现在未排序序列中找到最小(大)元素,放到起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。#include <stdio.h>#include <stdlib.h>#include <time.h>#define NUM 7#define swap(a原创 2022-02-26 23:11:21 · 662 阅读 · 0 评论 -
双向冒泡排序
双向冒泡排序1.前言2.实现步骤3.总结4.更新日志1.前言双向冒泡排序是在冒泡排序(单击前往查看) 的基础上加以改进得出的.冒泡排序:从左端开始依次左右相邻相邻两个元素比较双向冒泡排序:左右两侧都进行比较,大的数向右移动,小的数向左移动2.实现步骤#include <stdio.h>//void BubbleSort(int a[], int sz) //冒泡排序//{// int i, j;// for (i = 0; i < sz - 1;原创 2022-02-26 21:25:37 · 2637 阅读 · 2 评论 -
初级算法学习
初级算法十大经典排序算法1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序8.计数排序9.桶排序10.基数排序原创 2022-02-20 18:37:01 · 887 阅读 · 0 评论 -
冒泡排序算法
冒泡排序算法及其优化原创 2022-02-20 18:27:53 · 1131 阅读 · 0 评论