数据结构_数据结构与算法02

数据结构与算法02丨如何抓住重点,系统高效地学习数据结构与算法? 大部分数据结构和算法教材,在开篇都会给这两个概念下一个明确的定义。但是,这些定义都很抽象,对理解这两个概念并没有实质性的帮助,反倒会让你陷入死抠定义的误区。毕竟,我们现在学习,并不是为了考试,所以,概念背得再牢,不会用也就没什么用。虽然我们说没必要深挖严格的定义,但是这并不等于不需要理解概念。下面我就从广义和狭义两个层面,来帮你理解数据结构与算法这两个概念。从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。图书馆储藏书籍你肯定见过吧? 阅读详情
1》算法设计的原则
设计算法时,通常应考虑达到以下目标:
1,正确性、2,可读性、3,健壮性、4,高效率与低存储量需求

1,正确性:规格说明
四个层次:
    a,程序中不含语法错误;
    b,程序对于几组输入数据能够得出满足要求的结果;
    c,程序对精心选择的、典型、苛刻切带有刁难性的几组输入数据能够得出满足要求的结果;
    d,程序对于一切合法的输入数据都能得出满足要求的结果;
之所以软件要求维护:d条件是很难满足的。是个趋势

2,可读性:方便人的理解; 难度的程序隐藏错误较多,错误也难以调试。

3,健壮性:当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而不是产生莫名其妙的输出结果。

4,高效率与低存储量需求:算法执行时间,存储空间大小


和算法执行时间相关的因素:
1,算法选用的策略
2,问题的规模
3,编写程序的语言
4,编译程序产生的机器代码的质量
5,计算机执行指令的速度


随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,则可以记作:
    T(n)=O(f(n));
称T(n)为算法的时间复杂度.

算法=控制结构+原操作(固有数据类型的操作)

算法的执行时间=原操作(i)的执行次数*原操作(i)的执行时间。

算法的执行时间与原操作执行次数之和成比例。

for(){n次
  for(){n次
    for(){n次
    
      }    
  }
}

时间复杂度:O(n*n*n)

我们在看看选择排序:
例子二:
    void  select_sort(int a[] ,int n){
    //将a中整数序列重新排列成从小至大有序的整数序列
    for(i=0;i<n-1;++i){
      j=i;
        for(k=i+1;k<n;++k){
            if(a[k]<a[j]){j=k;}
        }
        if(j != i){ a[j] <--> a[i] }
    }
    }//select_sort

基本操作:比较操作
语句频度作为算法的时间复杂度。
这个算法的效率与输入的数据无关。-----》即使输入的数据是有序的,这双重for循环的次数无关。


例子三:
    void bubble_sort(int a[] ,int n){
    //将a中整数序列重新排列成自小至大
    //有序的整数序列。
    for(i=n-1;change=TRUE;i>1&&change;--i){
        change=FALSE;
        for(j=0;j<i;++j){
            if(a[j]>a[j+1]){a[j] <--> a[j+1] ; change = TRUE; }
        }
    }
}//bubble_sort 气泡排序

开始气泡数据:5 7 4 2 8 3
5 5 4 2 2

7 4 2 4 3

4 2 5 3 4

2 7 3 5 5

8 3 7 7 7

3 8 8 8 8

最好情况 外循环只需执行一次,最坏的情况O(n*n)
平均的时间复杂度: O(n*n)

四、算法的存储空间需求
 算法的空间复杂度
    S(n)=O(g(n))

算法的存储量包括:
    1、输入数据所占空间;
    2、程序本身所占空间;//可以不考虑
    3、辅助变量所占空间;

选择排序与气泡排序中:
    输入数据所占的空间是相同的;那么只需考虑辅助变量所占空间。

学习要点:
    理解算法要素的确切含义。
    掌握计算语句频度和估算算法时间复杂度的方法。

n*n  与  50*log2(n)  运用高中学习的知识点:观察它们的二维 曲线
当n趋向于无穷大时 当然是50*log2(n)


























































冒泡排序(Bubble_Sort) 冒泡排序算法是一个耳熟能详的算法,在我们学习计算机的专业课的时候,在课本中经常会见到该程序,作为一个非常简单的例子程序。如果你不能默写该算法,那么你就没学过计算机的相关课程。好了,不说闲话了。 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。 //冒泡排序(小数上升,大数下沉) #include typedef int Status; # 阅读详情

相关推荐

ArcGIS高效拆分shp文件:无需依赖属性表的实用技巧

本文针对ArcGIS中shp文件因属性表缺失而难以拆分的问题,详细介绍了无需依赖属性表的实用技巧。核心是使用“拆分多部件要素”工具,直接根据图形结构将多个独立但被合并的部件拆分为单个要素,并提供了ArcGIS Pro和ArcMap的操作流程、关键注意事项及拆分后的属性处理方案。

n2o3p4的博客 379

数据结构交换排序之起泡排序(参考严蔚敏数据结构)

//开始时是整个顺序表都是无序的,就算有序计算机也不知道 //而后逐步扩大有序序列,减小无需序列 //有序序列在表后,无序序列在表前,且有序序列中的key最小的元素的key都大于无序序列中的任意一个元素的key #include using namespace std; #define N 8 void bubble_sort(int a[], int n) { // 将a中整数序列重新排列成自

EditGP的专栏 1065

U盘重装Win10系统

准备工作 准备一个8G或8G以上U盘(32G以内) 请备份好u盘里的资料,在制作过程中会格式化硬盘 请备份好要安装系统的盘的资料,安装时也会对该盘内容进行格式化。 将u盘插入电脑usb接口中,尽可能的插入usb3.0的接口,这样下载和安装速度会更快。 1.到微软官网下载安装包 浏览器输入:微软官网下载win10 懒人请复制粘贴:https://www.microsoft.com/zh-cn/software-download/windows10 ​ 打开之后的界面: 2.下载Media Creat.

Cici$的博客 2116

Java开发:汇编语言

中国人和中国人沟通需要学习汉语中国人和美国人沟通在会汉语的基础上还要学习英语那么,人和机器沟通的话需要学习哪些语言呢?答案是:人类的语言+机器语言但是,机器语言都是由0和1组成,人类非常难读懂,所以出现了一种便于人类理解的语言 - 汇编语言。汇编语言介于人类语言和机器语言之间,人类通过汇编语言编写代码,执行的时候会将汇编语言翻译成机器语言,操作机器执行命令。

小五博客园 1194

【超详细】磁力计数据读取--以IST8310为例

第一章讲了IST8310的特性,I2C通信,最高支持400kHz通信速率,14位或者16位自适应数据输出等特性第二章讲了内部结构第三章讲了电气特性第四章讲了如何联系他们然后数据手册就没了。。。在大疆的开发手册中找到了寄存器的手册,如下:点开I2C配置选项, 下图是配好的:观察IST8310的数据手册,发现其支持最大400kHz的I2C通信速率,也就是快速I2C模式,所以第一行I2C Speed Mode我们选Fast Mode同时不要忘记了在C板中I2C3的两个IO口分别是PA8和PC9(一般来说都是这两个

lmh_12138的博客 1万+

爬虫-Playwright逆向小红书

【代码】爬虫-Playwright逆向小红书。

weixin_44201223的博客 2432

【数据结构】快速排序

数据结构 快速排序 /* 名称:快速排序 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-26 */ #include #include #include // 将a中整数序列重新排列成自小至大有序的整数序列(起泡排序) P273 void bubble_sort(int a[],int n) { int i, j, t, change

徐刘根的博客 2409

anaconda安装-超详细版

文章目录一、anaconda安装1.1 anaconda安装地址1.2 安装详细步骤检验安装是否成功更改conda源(后续安装第三方库可以加快速度) 一、anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。 anaconda优点: 1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而p

in546的博客 25万+

java视频转码mov转MP4

解决视频文件在web端获取时的问题,安卓手机的视频文件为MP4格式的,但是ios手机视频格式为mov格式的视频文件,在用户上传视频后,会造成无法播放此视频问题 通过以下方法解决此问题,我们可以在用户上传视频后转码为MP4格式,这要就可以解决此问题 在这我只提供main方法方便大家来引用 pom文件需要引入 <dependency> <groupId>it.sau...

weixin_38001828的博客 4934

使用MATLAB结合EasySpin进行ESR模拟的详细步骤及示例代码

安装EasySpin:确保你已经安装了EasySpin工具箱,它可以帮助你进行ESR模拟。你可以从EasySpin的官方网站(https://easyspin.org/)下载并安装。准备实验数据:将实验得到的EPR数据整理成合适的格式,一般包含磁场(Magnetic Field)和信号强度(Intensity)两列。进行模拟:使用EasySpin的函数对单线态氧自由基和超氧自由基进行模拟。调整参数:通过调整模拟参数,使模拟得到的峰型和峰位置与实验数据尽可能匹配。导出数据。

AI的内部世界的博客 2006

脉冲变压器电感选型参数,结构原理,工艺与注意问题总结

脉冲变压器电感简称脉冲变压器,是一种特殊类型的变压器,主要用于处理脉冲信号。它的主要特性是能够在短时间内承受高电压和大电流。脉冲变压器主要用于开关电源、脉冲功率放大、雷达脉冲调制等领域。本文对脉冲变压器的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1347

算法与数据结构全阶班02-算法和数据结构进阶班

算法与数据结构全阶班02-算法和数据结构进阶班。

niwoxiangyu的博客 161

【教培管家】小程序实战(五):体验课预约——从流量到转化的闭环

本节我们通过变量状态管理和数据联动,实现了孩子选择和日期选定。下一篇我们继续讲解预约页面,根据选择的日期来筛选排课,供用户进行预约。

低代码布道师的博客 1563

[数据结构与算法]02 什么是数据结构与算法以及我该怎么学

什么是数据结构与算法呢? 当你看到这个问题的时候,你脑海中的第一反应是什么? 数据结构就是指一组数据的存储结构,算法是操作数据的一组方法. 这样的答案是不是让你觉得,我去,这么抽象,所以算法是什么,数据结构是什么?还是一脸懵逼. 小时候我的问题可多了,总是问我母上大人,妈妈这个字念什么,那个字念什么.母上大人后来被我烦的不行,索性给了我一本<新华字典>,教我怎么查,从那儿以后再也没...

自由而不独立,仍是奴隶。 541

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Python数据结构与算法02

循环排序过程中,将序列逻辑上分为左半边(已排序,比对从后往前看)和右半边(未排序, 正常顺序到数组结束),新元素(右半边选到的当前待排元素)、当前元素(左半边比对到的已 排元素),左已排>右未排,左后移一位,直到右在有序的左半边找到位置(一轮结束)。区间下标从0开始([0,n-1]),以第一次比对来说,第0次循环从[0,n-1]找最小元素a[x]与 a[0]换位,如果a[0]就是最小的则不动,但这就算一次操作。不稳定:[5,4,3,2,1] --> [1,2,3,4,5]时,时间复杂度差不多O(n**2)

yuange1666的博客 948

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数据结构与算法02—算法

算法 定义:是解决特定问题求解步骤的描述。 算法描述 度量算法好坏 1、事后统计法:通过设计好的程序和数据,利用计算机计时器对不同算法程序的运行时间进行比较,从而确定算法效率的高低。 *弊端: 必须事先编好程序,再进行运行,如果程序处理的数据量较大,则会花费大量的时间和精力。 时间的比较主要依赖于计算机硬件和软件环境 算法的测试数据设计困难,在数据量较小的时侯,不管什么算法其运行时间都是很微小的,相差几乎为零。如果数据量大了,算法的优越性就出来了,但是这样又会耗费时间。 2、事前分析法:主要在计算机程序编

weixin_53334593的博客 275

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

02_算法与数据结构

算法与数据结构的区别 数据结构只是静态的描述了数据元素之间的关系。 高效的程序需要在数据结构的基础上设计和选择算法。 程序 = 数据结构 + 算法 总结:算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体 抽象数据类型(Abstract Data Type) 抽象数据类型(ADT)的含义是指一个数学模型以及定义在此数学模型上的一组操作。即把数据类型和数据类型上的运算捆在一起...

argb78546的博客 128

青少年编程与数学 02-016 Python数据结构与算法 02课题、数据结构

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。它不仅包括数据元素本身,还包括数据元素之间的关系。例如,一个班级的学生名单就是一个数据结构,学生是数据元素,学生之间的先后顺序(如学号顺序)是数据元素之间的关系。数据类型是对数据的分类,它定义了数据的存储方式、操作规则以及数据的取值范围。数据类型可以分为基本数据类型(如整型、浮点型、字符型等)和复合数据类型(如数组、结构体、类等)。数据类型主要关注数据的格式和操作方式,是编程语言中用于声明变量和函数返回值的类型说明。

明月看潮生的博客 1781

青少年编程与数学 02-018 C++数据结构与算法 02课题、数据结构

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。它不仅包括数据元素本身,还包括数据元素之间的关系。

明月看潮生的博客 1278

02如何抓住重点,系统高效地学习数据结构与算法?

以下内容总结自极客时间王争大佬的《数据结构与算法之美》课程,本文章仅供个人学习总结。 什么是数据结构?什么是算法? 从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。 类比图书馆的书籍,我们如果想找一本书可以有很多种方法能找到这本书,可以从头一本一本找,也可以根据分类来缩小范围找。毫无疑问后一种耗时更少。这就是生活中的算法。 算法和数据结构是联系在一起的,特定的数据结...

weixin_33730836的博客 302

数据结构与算法02

栈的介绍 # 栈是限制掺入和删除只能在一个位置上的进行的线性表 允许插入和删除的一端位于表的末端,叫做栈顶,不允许的另一端叫栈底 对栈的基本操作: 压栈和出栈 实现栈的方式:链表和数组 ,任何实现表的方法都可以实现栈 # 链表实现栈 可以使用单链表来实现栈,通过在表顶端插入一个元素来实现压栈,通过删除表顶端元素实现出栈 使用链表方式实现的栈又叫动态栈 动态栈有链表的部分特性(元素与元素之间在物理存储上可以不连续,但是功能

weixin_53515338的博客 111

&&数据结构与算法02

&&数据结构与算法02 链式表: 元素的数据项: 数据域:可以是各种类型的若干个数据项 指针域:指向下一元素 由若干个元素通过指针域连接在一起形成链式表。 不带头节点:第一个元素的数据域存储的就是有效的数据。 插入删除时可以会修改头节点指针,参数需要使用二维指针。 同时需要获取到上一个节点的指针,而头节点没有上一个节点,因此需要额外处理。 带头节点:第一个元素不使用,仅仅是为了用它来指向下一元素。 进入插入、删除操作时会比不带头节点的链表方便。

ZY1732331520的博客 198

数据结构与算法之美02

二、算法复杂度分析 如何分析、统计算法的执行效率和资源消耗? 时间、空间复杂度分析。 为什么需要复杂度分析? 你可能会有些疑惑,我把代码跑一遍,通过统计、监控,就能得到算法执行的时间和占用的内存大 小。为什么还要做时间、空间复杂度分析呢?这种分析方法能比我实实在在跑一遍得到的数据更准 确吗? 首先,我可以肯定地说,你这种评估算法执行效率的方法是正确的。很多数据结构和算法书籍还给 这种...

weixin_30236595的博客 159

备战软考Day02-数据结构与算法

数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。线性表是具有相同数据类型的n (n≥0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为:几个概念:ai是线性表中的“第i个”元素线性表中的位序。a1是表头元素;an是表尾元素。除第一个元素外,每个元素有且仅有一个直接前驱;除最后一个元素外每个元素有且仅有一个直接后继。

m0_74212228的博客 1412
上一篇: 数据结构排序算法_选择排序算法学习
下一篇: 数据结构排序算法_起泡排序算法学习
linuxMinx
博客等级 码龄15年 195粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值