我的创作纪念日 ---- 2024/3/26

前言

2024.3.26是我在CSDN成为创作者的第128天,也是我第一次真正在网上创作的第128天

当我还在日常创作时,突然发现我收到了一封信

我想我可以分享一下这段时间的感想以及收获 

机缘

在CSDN的这段时间里,我学习到了很多知识,也丰富了我的日常生活

在我编写实战项目的时候,有很多操作我还是不是很了解的,尤其是在学校的实战项目,当我遇到不会的代码时可以利用CSDN来学习我的知识盲区,实战项目结束后我认为将项目写到博客里是很有意义的

我认为当我意识到了写博客的时候我的一个机缘就来了

一是可以帮助别人了解相关方面的思路知识等

二是可以巩固自身的基础

做这件事情不仅仅对自身受益匪浅,对他人亦是莫大帮助

只有当自己需要帮助去观看别人的博客的时候,才能感受到一篇好的博客是有多么重要!!!


收获

目前在这段时间里只创作了22篇博客,跟我想的进度差不多

我给自己的任务是一星期一篇博客, 希望能够对各位有所收获

我的收获即是对知识的巩固,当然如若能帮助到别人那更是我莫大的收获


日常

创作目前已经是我学习、生活中的一部分了

当我学习一个知识点一段时间之后总会忘记一部分,但这时候写博客不仅能帮助回忆,还能帮助其他人,与其他人一起进步学习

不管再忙,或许在夜间听听歌,敲敲键盘,不知不觉的一篇博客就完成了,这种沉浸其中的感觉也是非常不错的,虽然会感觉时间过的很快,但不会觉得这一天白费了


成就

目前大一下学期,学习进度只到了C++,进度不是很快,但我觉得我写的最好的代码就是数据结构的实现了

下面是快速排序的各种实现方法,其中涉及了递归、非递归(栈、队列)

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>

// 快速排序递归实现
// 快速排序hoare版本
int PartSort1(int* a, int left, int right);

// 快速排序挖坑法
int PartSort2(int* a, int left, int right);

// 快速排序前后指针法
int PartSort3(int* a, int left, int right);

//快速排序
void QuickSort(int* a, int left, int right);

// 快速排序 非递归实现 栈
void QuickSortNonR1(int* a, int left, int right);

// 快速排序 非递归实现 队列
void QuickSortNonR2(int* a, int left, int right);

//三数取中法,让key值再中间提升快排效率
int GetMidIndex(int* a, int begin, int end)
{
	int mid = (begin + end) / 2;
	if (a[begin] > a[mid])
	{
		if (a[mid] > a[end])
		{
			return mid;
		}
		else if (a[begin] < a[end])
		{
			return begin;
		}
		else
		{
			return end;
		}
	}
	else //a[begin] < a[mid]
	{
		if (a[begin] > a[end])
		{
			return begin;
		}
		else if (a[end] > a[mid])
		{
			return mid;
		}
		else
		{
			return end;
		}
	}
}

int PartSort1(int* a, int left, int right)
{
	int mid = GetMidIndex(a, left, right);
	Swap(&a[mid], &a[left]);

	int keyi = left;

	while (left < right)
	{
		//要先找小,因为keyi在左,右边先出发相遇位置一定是小
		//找小
		while (left < right && a[right] >= a[keyi])
			right--;

		//找大
		//等号一定要加,因为begin是从keyi开始的
		while (left < right && a[left] <= a[keyi])
			left++;

		if (left < right)
			Swap(&a[left], &a[right]);
	}
	Swap(&a[keyi], &a[left]);

	return left;
}

int PartSort2(int* a, int left, int right)
{
	int mid = GetMidIndex(a, left, right);
	Swap(&a[mid], &a[left]);

	int hole = left;
	//key记录挖坑位置的值
	int key = a[hole];

	while (left < right)
	{
		while (left < right && a[right] >= key)
			right--;

		a[hole] = a[right];
		hole = right;

		while (left < right && a[left] <= key)
			left++;

		a[hole] = a[left];
		hole = left;
	}
	a[hole] = key;

	return hole;
}

int PartSort3(int* a, int left, int right)
{
	int mid = GetMidIndex(a, left, right);
	Swap(&a[mid], &a[left]);

	int key = left;
	int prev = left, cur = left + 1;
	while (cur <= right && prev != cur)
	{
		if (a[cur] <= a[key])
		{
			prev++;
			Swap(&a[cur], &a[prev]);
		}
		cur++;
	}
	Swap(&a[left], &a[prev]);

	return prev;
}

void QuickSort(int* a, int left, int right)
{
	if (left >= right)
		return;

	//先排好keyi这个固定位置,再向两边排
	int keyi = PartSort3(a, left, right);

	QuickSort(a, left, keyi - 1);
	QuickSort(a, keyi + 1, right);
}

//栈版本,深度优先
void QuickSortNonR1(int* a, int left, int right)
{
	Stack s;
	StackInit(&s);

	//必须先入栈入右区间再入左区间,因为栈是先进后出
	StackPush(&s, right);
	StackPush(&s, left);

	while (!StackEmpty(&s))
	{
		left = StackTop(&s);
		StackPop(&s);
		right = StackTop(&s);
		StackPop(&s);

		int keyi = PartSort1(a, left, right);

		if (left < keyi)
		{
			StackPush(&s, keyi - 1);
			StackPush(&s, left);
		}
		if (right > keyi)
		{
			StackPush(&s, right);
			StackPush(&s, keyi + 1);
		}
	}
}

//队列版本,广度优先
void QuickSortNonR2(int* a, int left, int right)
{
	Queue q;
	QueueInit(&q);

	QueuePush(&q, left);
	QueuePush(&q, right);

	while (!QueueEmpty(&q))
	{
		left = QueueFront(&q);
		QueuePop(&q);
		right = QueueFront(&q);
		QueuePop(&q);

		int keyi = PartSort1(a, left, right);

		if (left < keyi)
		{
			QueuePush(&q, left);
			QueuePush(&q, keyi - 1);
		}
		if (right > keyi)
		{
			QueuePush(&q, keyi + 1);
			QueuePush(&q, right);
		}
	}
}

这种使用了各种方法学以致用的感觉写出来的代码能够跑出来的时候

感觉是非常好的,就像做出来一道算法题一样,有过之而无不及 


憧憬

目前对于未来的方向就是C++软件开发,所以我会往这个方向不断出发,学习后续知识的同时发布博客(c/c++、数据结构、Linux、MySQL等)

大一大二参加比赛,储备知识,大三找实习,大四收获offer

朝着那个遥不可及的offer一步步前进

做个自己都觉得自己自律的自己!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/491692.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux之时间子系统(四): tick 层模块(broadcast )

一、前言 在内核中&#xff0c;有cpuidle framework可以控制cpu的节电&#xff1a;当没有进程调度到该cpu上执行的时候&#xff0c;swapper进程粉墨登场&#xff0c;将该cpu会被推入到idle状态。当然CPU的idle状态有深有浅&#xff0c;当CPU睡的比较深入的时候&#xff0c;有可…

hadoop 查询hdfs资源信息的方式

hdfs dfsadmin -report &#xff3b;-live&#xff3d;&#xff3b;-dead&#xff3d;&#xff3b;-decommissioning&#xff3d;

跟张良均老师学大数据人工智能——数据挖掘集训营开营

集训营特色&#xff1a; 知识点深入浅出&#xff0c;实现以学促用 以业务内容为主线&#xff0c;数据挖掘技能嵌入 多行业项目实战&#xff0c;全面提升职业素养 全程线上辅导&#xff0c;助力熟练掌握技能 惊喜优惠&#xff1a; 限时“六折”&#xff01; 师傅带练 方向…

芝麻云节点服务器:零知识加密与跨用户兼得

海量大数据是指数据量特别大、数据类别非常大的数据集&#xff0c;而这样的数据集无法使用传统的数据库工具进行捕获、管理和处理。 数据量太大&#xff0c;没有地方存放。 服务器硬盘能存储多少数据肯定无法满足如此大量的数据存储需求。 因此&#xff0c;分布式存储系统应运而…

Git常用指令使用

摘要&#xff1a;之前代码管理都是借助于fork、sourceTree等图形工具&#xff0c;最近发现直接用命令也好用&#xff0c;就总结Git常用的指令 1、Git的介绍 1.1 git官网 安装: Git - Downloading Packagehttps://git-scm.com/download/mac Mac上安装&#xff0c;直接使…

【WEEK5】 【DAY2】文件上传下载【中文版】

2024.3.26 Tuesday 目录 10.文件的上传和下载10.1.准备工作10.2.基础配置10.2.1.新建名为springmvc-08-file的module10.2.2.新建controller文件夹&#xff0c;applicationContext.xml文件 10.3.文件上传10.3.1.在本模块的pom.xml中导入文件上传的jar包&#xff1a;commons-file…

虎课网C4D软件系列课程

教程介绍 讲解C4D从0基础到精通&#xff0c;课程涵盖C4D的多边形建模&#xff0c;材质灯光&#xff0c;运动图形&#xff0c;效果器&#xff0c;并有实例教学。 学习地址 百度网盘&#xff1a;https://pan.baidu.com/s/1R9zampaH-KWH7Q6ZcPTrQQ?pwdxhlw

Embedding模型提升效果的方法之一:Whitening和pooling

0. 前言 Embedding模型的主流框架基本上分为三类——基于bert结构的&#xff0c;基于GPT结构的和基于T5结构的&#xff0c;当然这些结构都是Transformer的变形。对于Embedding模型&#xff0c;使用bert结构目前看是最好的。有篇论文论文对基于bert的Embedding模型和基于GPT的E…

How to convert .py to .ipynb in Ubuntu 22.04

How to convert .py to .ipynb in Ubuntu 22.04 jupyter nbconvertp2j 最近看到大家在用jupyter notebook&#xff0c;我也试了一下&#xff0c;感觉还不错&#xff0c;不过&#xff0c;也遇到了一些问题&#xff0c;比方说&#xff0c;我有堆的.py文件&#xff0c;如果要一个一…

STM32 使用gcc编译介绍

文章目录 前言1. keil5下的默认编译工具链用的是哪个2. Arm编译工具链和GCC编译工具链有什么区别吗&#xff1f;3. Gcc交叉编译工具链的命名规范4. 怎么下载gcc-arm编译工具链参考资料 前言 我们在STM32上进行开发时&#xff0c;一般都是基于Keil5进行编译下载&#xff0c;Kei…

C++STL学习之unordered_map与unordered_set(底层Hash)

前言&#xff1a;我们前面已经学习论map和set&#xff0c;现在又冒出来一个unordered_map和unordered_set&#xff0c;这两个有啥差别吗&#xff1f;前面我们已经说过&#xff0c;map和set的底层是红黑树&#xff0c;那unordered_map和unordered_set的底层是什么呢&#xff1f;…

2024 解决 Failed to launch process [ElasticSearch]

操作系统&#xff1a;centos 7 (x86) sonarQube不能使⽤root账号进⾏启动&#xff0c;所以需要创建普通⽤户及其⽤户组 一、问题描述&#xff1a;使用root启动时&#xff0c;一直反馈 SonarQube is not running 问题原因&#xff1a;不能够使用root用户进行启动 解决方案…

Python(Socket) +Unreal(HTTP)

Python&#xff08;Socket&#xff09; Unreal&#xff08;HTTP&#xff09; python&#xff08;Socket&#xff09;:UE&#xff1a;Post请求并发送本机IP 上班咯&#xff0c;好久没记笔记了。。。 局域网 UE的apk&#xff0c;请求Python的Socket 跑起Socket &#xff0c;UE发 …

【Python机器学习系列】sklearn机器学习模型的保存---joblib法

这是我的第247篇原创文章。 一、引言 joblib包是由scikit-learn外带的&#xff0c;是一个用于将Python对象序列化为磁盘文件的库&#xff0c;专门用于大型数组&#xff0c;常用于保存机器学习模型。它可以高效地处理大型数据集和模型。对于大数据和大型机器学习模型&#xff0…

JavaScript高级(一)--V8引擎上

浏览器渲染的原理 主流浏览器及其内核 内核浏览器css前缀备注TridentIE4-IE11-ms最新的Edge已转向BlinkGecko火狐浏览器-mozWebkitsafari、旧版谷歌-webkitBlinkGoogle Chrome-webkitPrestoopera-o现在的opera转向了Blink 我们常说的浏览器内核指的就是浏览器的排版引擎&…

【No.20】蓝桥杯简单数论下|寻找整数|素数的判断|笨小猴|最大最小公倍数|素数筛|埃氏筛|欧氏线性筛|质数|分解质因子(C++)

寻找整数 【题目描述】 有一个不超过 1 0 1 7 10^17 1017的正整数n&#xff0c;知道这个数除以2至49后的余数如下表所示&#xff0c;求这个正整数最小是多少 解法一&#xff1a;模拟 暴力法&#xff1a;一个个检验 1 … 1 0 17 1\dots 10^{17} 1…1017的每个数 由于这个数n…

证券公司数据摆渡,如何兼顾安全性、可控性和效率?

根据国家和金融行业的法律法规要求&#xff0c;我国的证券公司不少采用网络隔离的方式将内部网络隔离为操作内网和操作外网&#xff0c;但网络隔离后&#xff0c;证券公司的操作内外网间仍需要进行数据交换&#xff0c;如提数、与第三方合作机构的数据外发和收取等业务需求&…

【AI绘画/作图】风景背景类关键词模板参考

因为ds官网被墙,所以翻了IDE的源码整理了下stablestudio里的官方模板&#xff0c;顺便每个模板生成了一份…不知道怎么写关键词的可以参考 Stunning sunset over a futuristic city, with towering skyscrapers and flying vehicles, golden hour lighting and dramatic cloud…

MySQL数据库的高级SQL语句与高级操作(1)

目录 以下例子都是基于该数据表 1、查询不重复记录&#xff08;distinct&#xff09; 2、and 、or&#xff1a;根据多条件查询 3、IN ----显示已知的值的数据记录 4、BETWEEN ----显示两个值范围内的数据记录 5、 like通配符&#xff1a;模糊查询 6、order by&#xff1a…

vlan、三层交换机、网关、DNS、子网掩码、MAC地址详解

vlan、三层交换机、网关、DNS、子网掩码、MAC地址详解 一、 什么是VLAN&#xff1f; VLAN中文是“虚拟局域网”。 ​ LAN可以是由少数几台家用计算机构成的网络&#xff0c;也可以是数以百计的计算机构成的企业网络。 ​ VLAN所指的LAN特指使用路由器分割的网络——也就是广…