【算法】简单排序(选择,冒泡,插入)

排序算法:冒泡、简单选择、直接插入、归并、堆排序、快速排序 简单的三种排序 总结:排序算法中最基本的三种算法(简单选择,冒泡,插入),这三种排序算法的时间复杂度均为O(n2) 性能总结: 1、稳定性:归并排序最好。 2、空间复杂度:堆排序最好。 3、经过优化的快速排序最好,普通快速排序像是情绪化的天才。 引出原因: 1、归并排序:堆排序结构复杂,直接利用完全二叉树。1.分解:将当前区间一分为二,即求分裂点2.求解:递归地对两个子... 阅读详情

1、 什么是简单排序

简单排序是指基于比较的排序算法,包括冒泡排序、选择排序和插入排序。这些算法通常容易理解和实现,但在实际应用中,它们的效率通常比高级排序算法慢。

2、 复杂度分析

  1. 选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。不稳定的排序

  2. 冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1)。稳定的排序

  3. 插入排序的时间复杂度为O(n^2),空间复杂度为O(1)。稳定的排序

2.1 【选择排序】代码

	/**
	 * 选择排序
	 * 时间复杂度:O(n^2)
	 * 空间复杂度:O(1)
	 */
    public static void selectionSort(int[] arr) {
        int n = arr.length;
        
        // 每次循环将待排序区间的最小元素放到已排序区间末尾
        for (int i = 0; i < n - 1; i++) {
            int minIndex = i;
            
            // 从待排序区间中找到最小元素的索引
            for (int j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            
            // 将最小元素与已排序区间末尾交换位置,执行这一步的时候就会失去稳定性
            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }

2.2 【冒泡排序】代码

	/**
	 * 冒泡排序
	 * 时间复杂度:O(n^2)
	 * 空间复杂度:O(1)
	 */
    public static void bubbleSort(int[] arr) {
        int n = arr.length;

        // 进行n-1轮冒泡
        for (int i = 0; i < n - 1; i++) {
            // 每轮将待排序区间的最大元素冒泡到末尾
            for (int j = 0; j < n - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    // 交换位置
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

2.3 【插入排序】代码

	/**
	 * 插入排序
	 * 时间复杂度:O(n^2)
	 * 空间复杂度:O(1)
	 */
    public static void insertionSort(int[] arr) {
        int n = arr.length;
        
        // 从第二个元素开始,将其插入到已排序的区间中
        for (int i = 1; i < n; i++) {
            int key = arr[i];
            int j = i - 1;
            
            // 将比key大的元素向后移动,为key找到合适的位置
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j--;
            }
            
            // 将key插入到合适的位置
            arr[j + 1] = key;
        }
    }

时间复杂度分析:

  • 由于嵌套了两个for循环,所以总的时间复杂度为O(n^2)
  • 对于每个元素进行比较和交换操作都是常数时间O(1)

空间复杂度分析:

  • 只需使用常数个额外空间来存储变量,所以空间复杂度为O(1)
半导体关键系统之RMS浅谈 这种系统还要求设备在设备上的配方发生变化时通知工厂主机,并需要与EAP(Equipment Automation Process)联结,旨在实时管控自动化系统所用配方与用户当初的设定是否匹配,从而使得自动化系统所用的配方更加趋于安全。例如,制药行业中的药品生产管理系统(GMP),它对药品的生产过程进行严格控制,包括原材料的采购、生产工艺流程、质量控制等方面。这些系统通常与企业的生产系统集成,能够对产品的配方进行精细化管理,包括配方的设计、试验、验证、生产等环节。 阅读详情

相关推荐

告别社区5级:一个脚本搞定小米/红米BL解锁的账号绑定限制(附资源下载与避坑指南)

本文提供了一种绕过小米/红米设备Bootloader解锁社区等级限制的技术方案,适用于MIUI 12.5-14和HyperOS 1.0系统。通过自动化脚本临时修改系统组件,用户可快速完成账号绑定和设备解锁流程,附详细操作指南和常见问题解决方案。

weixin_27330481的博客 730

三种最简单的排序算法(直接插入排序、冒泡排序、简单选择排序)

一、直接插入排序(稳定) 直接插入排序是最简单的排序方法之一,其基本思想是每次从无序表中取出一个元素,把它插入到有序表的合适位置,使有序表依然有序。直接插入排序是由两层嵌套循环组成的,外层循环标识并决定待比较的数值,内层循环为待比较数值确定其最终位置,其算法时间复杂度为O(N*N),空间复杂度为O(1)。 void insertSort(int a[], int len) //本文默认排

奇颖润华 3878

从零到一:Abaqus与Matlab联合仿真的自动化流程构建指南

本文详细介绍了如何构建Abaqus与Matlab联合仿真的自动化流程,涵盖基础架构设计、关键接口技术实现、结果提取与处理技术以及高级参数化优化流程。通过Python脚本作为桥梁,实现数据传递和任务控制,帮助工程师提升仿真效率。特别强调了版本兼容性、异常处理和性能监控等实用技巧。

weixin_29090089的博客 611

C语言|线性表的排序算法|简单插入排序、简单选择排序、冒泡排序|未完待续

线性表的排序算法排序相关的几个基本概念直接插入排序(简单插入排序)基本思想代码示例性能分析空间复杂度时间复杂度冒泡排序基本思想 排序相关的几个基本概念 排序依据是指数据元素的关键字,若关键字是主关键字,即关键字值不重复,则无论采用何种排序方法,排出的结果都是唯一的,若关键字是次关键字,即关键字值可以重复,则排出的结果可能不唯一,即相同关键字的数据在排序前后的相对位置发生了变化。 稳定排序:对于任意的数据元素序列,在排序前后相同关键字数据的相对位置都保持不变。 不稳定排序:存在一组数据序列,在排序前后,相同

weixin_48709737的博客 6535

CANoe UDS $27服务DLL生成实战:从工程配置到算法修改全流程

本文详细介绍了在Vector CANoe中为UDS(统一诊断服务)的$27安全访问服务生成定制化DLL(动态链接库)的全流程。从定位官方参考工程、配置Visual Studio开发环境,到深入解析核心的GenerateKeyEx函数接口,并重点演示了如何修改和实现自定义的种子-密钥安全算法,最终完成DLL的编译、部署与CANoe集成测试,为汽车电子诊断开发提供实战指导。

star5的专栏 534

WorkBuddy Skill赋能HYSYS与Comsol:AI工作台下的仿真自动化实践

AI Agent正将工业软件自动化带向新高度。在工程仿真领域,流程模拟与多物理场分析常因重复性操作而效率低下,Aspen HYSYS的批量工况调整、Comsol的参数扫描与网格重构均属此类。WorkBuddy这类AI工作台通过Skill将软件二次开发能力封装为可插拔技能包,利用HYSYS的COM/OLE接口和Comsol的Java API,实现自然语言指令到自动化执行的转变。其技术价值在于降低自动化门槛、沉淀工程经验,并支持日志审计与异常重试。在实际应用中,无论化工流程的灵敏度分析,还是激光焊接、移动网格等

weixin_29055699的博客 298

【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析

本文简单介绍了冒泡排序、简单选择排序、直接插入排序,并对这三种排序进行比较,入参都是80000个随机数,比较算法耗时。进一步,我们通过代码分析三种排序算法的性能。

baidu_33146219的博客 2万+

YOLOv8损失函数升级:从CIoU到Wise-IoU v3的实战调优与避坑指南

本文详细介绍了如何将YOLOv8的损失函数从CIoU升级到Wise-IoU v3,以提升目标检测性能,特别是在小目标检测和样本不均衡场景下的表现。通过实战调优步骤和避坑指南,帮助开发者有效应用Wise-IoU v3的动态聚焦机制和单调性控制,显著提升模型精度和训练稳定性。

weixin_33737774的博客 590

数据结构 | 算法精讲:‘直接插入排序、冒泡排序、简单选择排序

设有关键字序列{7,4,-2,19,13,6},为了方便理解,我们把序列用两个中括号隔开,前面的中括号包含的是已经排好序的序列,后面的中括号包含无序序列。依次比较相邻的两个记录的关键字,若两个记录是反序的(即前一个记录的关键字大于后前一个记录的关键字),则进行交换,直到没有反序的记录为止。进行第一趟排序时,7是有序序列,4是无序序列的首元素,也是第一次排序的待排元素,我们用它和有序序列的末元素开始依次比较。因为4比7小,所以7向后移动一个单位,前面没有元素了,4插入到7的前面,比较结束。

qq_69383479的博客 2177

手持式激光测距仪全套方案

激光测距全套方案,包括原理图、源代码、PCB、BOM、光学部分资料,结构、特殊元件数据手册及供应商联系方式,提供调试技术文档。全套方案已成功打板验证,实现0.05~50m测量范围,精度在+/—1.5mm,激光波长635~650nm,功率《1mW。方案预留了TTL串口、RS485接口,可通过串口助手看到测量数据,可自行DIY或者商业开发。无论是电路小白,还是技术大拿,都能通过方案资料成功做出一套激光测距仪。

Laser01的博客 2055

ffmpeg 4.4 cenc-aes-ctr 加解密 MP4 工程性质分析

ffmpeg 4.4 cenc-aes-ctr 加解密 MP4 工程性质分析

Dream_Dynasty的博客 3045

五、排序算法之简单算法——冒泡排序、简单选择排序和直接插入排序

废话不多说,先来个笑话(声明笑话转载): 最近的国际局势就像这样,美帝喊:有种放学别走! 乌克兰大叫:老子喊人揍死你。 欧盟嚷嚷道:下课就动手!! 普大帝冷冷的说:放学了啊,到底打不打我呀,不打我走了。 进入正题,学算法不可能不提排序,排序算法主要分为:简单算法和改进算法,前者主要有冒泡排序、简单选择排序和直接插入排序;后者主要有希尔排序(改进自直接插入排序)、堆排序(改进自简单

kukutengteng的专栏 2167

解决Unity与3DMax模型单位与中心点偏差的完整指南

本文详细解析了Unity与3DMax模型导入时常见的单位与中心点偏差问题,提供了从3DMax单位设置、FBX导出到Unity接收调整的完整解决方案。通过实战案例和高效工作流建议,帮助开发者实现unity与3dmax的单位统一,避免尺寸错误和轴心偏移,提升3D资源导入效率。

weixin_29015899的博客 286

简单排序算法之选择排序、直接插入排序和冒泡排序

简单排序包括简单选择排序、直接插入排序和冒泡排序。时间负责度均为O(n2). 1、 简单选择排序(Selection sort)——不稳定 基本思想:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。   Template void SelectS

程序员面试精选【codeoffer】 1435

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C语言实现各个排序算法(直接插入排序,折半插入排序,希尔排序,冒泡排序,简单选择排序)

数据结构开发总结报告 ——内部排序综合设计程序的编程实现 实现各个排序算法(直接插入排序,折半插入排序,希尔排序,冒泡排序,简单选择排序) #include<stdio.h> #define MaxSize 20 #include<windows.h> typedef int KeyType; //定义关键字类型 typedef struct //记录类型 { KeyType key; //关键字项 } RecType;

ring__wang的博客 3645

深度学习工具包 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")

几种简单排序算法总结---简单选择排序、直接插入排序、冒泡排序、快速排序

最近准备考研复试,又拿出数据结构想写一下几个排序的算法,可是忽然发现自己看到这些算法全都懵了,根本不知道谁对应着谁,所以花点时间总结一下(以下均为从小到大排列) 直接插入排序 这个算法很简单,简单的想法就是有多少个数字我进行多少次插入,下面画个示例图 初试 : 默认5有序 第一轮 : 比较5和7 发现5比7小 不发生任何交换 5 7 有序 第二轮: 比较8和7 发现8比7大 不发生任何交...

小小程序员 2447

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

简单排序算法:冒泡、选择、插入

今天介绍一下三种简单的排序算法:冒泡排序、选择排序、插入排序

zhanzehong的专栏 656

图解排序算法之3种简单排序(选择,冒泡,直接插入)

排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。 先定义个交换数组元素的函数,供排序时调用 简单选择排序   简单选择排序是最简单直观的一种算法,基本思想为将序列分为有序序列和待排的无序序列,每一趟从后面n-i个待排数据元素中选择最小的一个元素作为有序序列的第i个元素,直到所有元素排完为止。   在算法实现时,每一趟确定最

tecoes的博客 3123

排序算法:直接插入排序,折半插入排序,冒泡排序,快速排序,简单选择排序

一、直接插入排序 基本操作是将一条记录插入到已排好序的有序表中,从而得到一个新的、记录数量增1的有序表。 算法步骤: ①设待排序的记录存放在数组r[1...n]中,r[1]是一个有序序列; ②循环n-1次,每次使用顺序查找法,查找r[i](i=2...n)在已排好序的序列r[1...i-1]中的插入位置,然后将r[i]插入表长为i-1的有序序列r[1...i-1],直到r[n]插入表长为n-1的有序序列r[1...n-1],最后得到一个表长为n的有序序列。 void insertsort(nod

xiaoyeren_ITRoad的博客 3026

几种简单排序(冒泡排序,插入排序,选择排序)算法介绍

可以通过 JDK 自带的 sort 方法来验证上述三个排序过程是否正确,思路就是随机生成大样本量的数组,通过三个排序的结果和 JDK 自带的 sort 排序的结果一致,即可证明算法实现上是正确的。如果数组本身是有序的,那么插入排序的过程不需要移动任何数字,但是时间复杂度是以最坏情况估计,所以插入排序的时间复杂度仍然是。范围上,找到最小值所在的位置,然后把最小值交换到 0 号位置;范围上,找到最小值所在的位置,然后把最小值交换到 1 号位置;范围上,找到最小值所在的位置,然后把最小值交换到 2 号位置;

Practitioner 989

简单排序算法(冒泡排序、选择排序、插入排序、希尔排序)

java 排序算法 冒泡排序 选择排序 直接插入排序 希尔排序

Ronz 的博客 1210

排序算法1—冒泡、简单选择、插入排序

需要掌握冒泡排序、插入排序、归并排序、快速排序 1、冒泡排序 时间复杂度分析: 排序在最好的情况时,即序列本身有序,时间复杂度为O(n) 最差的情况时,即序列逆序时,时间复杂度为n(n-1)/2,即o(n*n) 注意:注意观察这个冒泡的内循环写法,这种冒泡比一般从前面开始比较的冒泡,算法效率稍微好一点,具体可参考《大话数据结构》p380。 void BubbleSort(int ...

qq_33611947的博客 246

简单排序算法(直接插入、简单选择、冒泡)

简单排序算法 1. 直接插入排序: //直接插入排序: //从左往右扫描出一个无序序列元素作为待插入关键字,扫描到比它大的已插入关键字就往后移动(循环),直到找到第一个比它小的关键字,就可以把待插入关键字插入 //两层循环:1.从无序序列中一个个挑选出待插入关键字 2.扫描当前有序序列,需要移动元素则移动 void insertSort(in...

烟敛寒林的博客 873

简单选择排序流程图_图解排序算法:3种简单排序(选择、冒泡、直接插入)

来自:dreamcatcher-cx链接:cnblogs.com/chengxiao/p/6103002.html00 前言排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择、冒泡、插入。先定义个交换数组元素的函数,供排...

weixin_42644410的博客 7034

C语言-走进数据结构的简单排序算法(直接插入排序、冒泡排序、简单选择排序)(一)

数据结构简单排序算法一、直接插入排序升序代码示例:降序代码示例:二、冒泡排序三、简单选择排序 简单排序算法   数据结构是科班同学们必学的课程,当然这门课程并不是那么好学,有些同学一点就透,有些同学就需要一段比较长的积累时间,当你在一个点被卡住以后,你没有其他的思路,那么你就会被卡很久,这点相信大家都身有体会,如此就体现出了遇见一篇好文章的重要性。本文主要为三种简单排序做一些比较详细的介绍,后续再对其他排序算法进行介绍。 一、直接插入排序  直接插入排序是一种简单的排序算法,当然有些同学刚刚接触到它会显得尤

pycharm_k的博客 1万+

三个简单排序算法:冒泡、简单选择、直接插入

第一个是冒泡,最简单,但是性能一般(以下是改进版的,在冒泡过程中加入了flag判断有没交换过) public class BubbleSort { public static void main(String[] args) { int i,j; ...

221
上一篇: 【算法】时间复杂度
下一篇: 【算法】归并排序(小和问题,逆序对问题)
尹正义
博客等级 码龄6年 134粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值