快速排序算法、计数排序算法

冒泡排序、快速排序、基数排序、计数排序算法性能分析 1) 排序n个元素,元素为随机生成的1到65535之间的整数,n的取值为: 2^2,2^5,2^8,2^11,2^14,2^17 ; 2) 算法:冒泡排序,快速排序,基数排序,计数排序; 3) 对结果进行性能分析。 阅读详情

快速排序是分治算法,将数组分为几部分,在各部分内完成排序,递归排序。算法时间复杂度O(nlgn)。这是比较排序算法中速度最快的一个算法了。计数排序、基数排序、桶排序算法是非比较排序算法,他们的算法复杂度是O(n)。快速排序算法在选取支点上要有技巧,最好能达到随即要求。
1,快速排序算法:
普通快速排序
 1typedef struct int_array
 2{
 3    int *pa;//数组,对于任意类型的数据,可以使用char *pc,int typelen实现。
 4    int array_size;//数组元素数量
 5    int capacity;//缓存大小
 6} INT_ARRAY;//有点类似于vector
 7
 8
 9int partition(INT_ARRAY *pia,int p,int r)
10{
11    int x,i,j;
12    x = pia->pa[p];
13    i = p -1;
14    j = r + 1;
15    while (1)
16    {
17        --j;
18        while(pia->pa[j] > x && j-- >= p)
19            ;
20        ++i;
21        while(pia->pa[i] < x && i++ <= r)
22            ;
23
24        if (i < j)
25        {
26            swap(&pia->pa[i],&pia->pa[j]);
27        }
28        else
29        {
30            return j;
31        }
32    }
33}
34
35void quick_sort(INT_ARRAY *pia,int p,int r)
36{
37    int q;
38    if(p < r)
39    {
40        q = partition(pia,p,r);
41        quick_sort(pia,p,q);
42        //p = q +1;
43        quick_sort(pia,q+1,r);
44    }
45}
2,改进版本的快速排序(随机分布版本的快速排序)
随机分布快速排序
 1int random_partition(INT_ARRAY *pia,int p,int r)
 2{
 3    int i = (mrand() %(r-p +1)) + p;
 4    swap(&pia->pa[i],&pia->pa[p]);
 5    return partition(pia,p,r);
 6}
 7void random_quick_sort(INT_ARRAY *pia,int p,int r)
 8{
 9    int q;
10    if (p < r)
11    {
12        q = random_partition(pia,p,r);
13        random_quick_sort(pia,p,q);
14        random_quick_sort(pia,q + 1,r);
15    }
16}
3,计数排序算法
   计数排序算法是需要知道数组元素的上下限,并且最好是对整数元素排序,计数每个元素的个数,需要占用比较多的空间。
计数排序
 1void counting_sort(INT_ARRAY *pia, int max)
 2{
 3    int i,c;
 4    int *pb,*pc;
 5   
 6    //malloc 最多UNIT_MAX字节,因此c 最多到UINT_MAX/sizeof(int) ;
 7    pb = (int*)malloc(sizeof(int) * pia->array_size);
 8    if (!pb)
 9    {
10        return;
11    }
12    c = max + 1;
13    pc = (int*)malloc(sizeof(int)*c);
14    if (!pc)
15    {
16        free(pb);
17        return;
18    }
19    memset((char*)pb,0xCC,sizeof(int)*pia->array_size);
20    memset((char*)pc,0xCC,sizeof(int)*c);
21    for (i = 0; i < pia->array_size; ++i)
22    {
23        pb[i] = pia->pa[i];
24    }
25    for (i = 0 ; i < c ; ++i)
26    {
27        pc[i] = 0;
28    }
29    for (i = 0; i < pia->array_size; ++i)
30    {
31        pc[pb[i]] ++;
32    }
33    for (i = 1; i < c; ++i)
34    {
35        pc[i] += pc[i-1];
36    }
37    for (i = pia->array_size - 1; i >= 0; --i)
38    {
39        pia->pa[pc[pb[i]] -1] = pb[i];
40        pc[pb[i]] --;
41    }
42    free(pb);
43    free(pc);
44}4,测试代码
   在测试整数时,1kw整数,快速排序5秒,堆排序20秒,计数排序是0.43秒。

排序算法深度解析:从快速排序到计数排序 本文深入探讨了几种常见的排序算法,包括快速排序、归并排序、堆排序、桶排序和计数排序。通过代码示例和算法特性分析,揭示了它们的工作原理、优缺点以及适用场景。 阅读详情

相关推荐

JS实现的计数排序与基数排序算法示例

本文实例讲述了JS实现的计数排序与基数排序算法。分享给大家供大家参考,具体如下: 计数排序 计数排序就是简单的桶排序,一个桶代表数组中一个数出现的个数,所以需要一个和数组数字范围一样大的辅助数组,一般用在范围小于100的排序,时间复杂度为O(n),空间复杂度为数组的数字范围。 /** * 范围在 start - end 之间的排序 * 计数排序需要辅助数组,该辅助数组的长度是待排序数组的范围,所以一般用作范围小于100的排序 */ function countSort(arr, start, end) { var len = arr.length; // 桶数组 var s

排序算法:快速排序、归并排序、计数排序详解

(1)快速排序是应用最广的排序算法,它流行的原因是当数据量n很大时,它是原地排序,只占用lgN的辅助栈空间,属于是O(nlogn)时间复杂度的先进排序。(2)如果中枢值(pivot)选取不对,那么性能受到严重影响,时间复杂度劣化为O(n2)特点:快速排序是对冒泡排序的改进,时间复杂度O(nlgn),最糟糕的情况下会降到O(n2)。平均时间在所有先进方法中属于最好的。

晓风残月淡的博客 1188

特征模理论指导滤波天线设计的优势和方法

本文探讨了特征模理论在滤波天线设计中的应用优势和方法。特征模理论通过分析天线结构的本征模特性,突破了传统经验设计的局限,实现了辐射与滤波功能的一体化设计。文章重点阐述了如何利用模式显著性(MS)和模式加权系数(MWC)来指导辐射零点的产生,揭示了辐射零点形成的物理机制。通过特征模分析,设计师可以明确调控天线结构和馈电系统,优化滤波性能。这种方法为现代多频/宽带滤波天线设计提供了理论依据和实用工具,显著提升了设计效率和性能指标。

qq_64207806的博客 956

计数排序(排序算法)

1.计数排序 计数排序平均时间复杂度:o(n+k)(平方)、空间复杂度:o(k)、稳定排序、外部排序 1.1算法描述 计数排序,不是基于元素比较,而是利用数组下标确定元素的正确位置。 1.2排序演示 待排序列:9 3 5 4 9 1 2 7 8 1 3 6 5 3 4 0 10 9 7 9 先便利这个无序的数列,让每一个整数按照值对号入座,对应数组下标的元素加1。 统计结果如下图所示: 数组值:|...

qq_42111463的博客 3万+

ZYNQ RFSoC 的DAC如何做到从 0到Fs频段 信号输出

之前一直没太了解 RFSoC 的DAC如何输出在 Fs/2 到 Fs 频率范围内的信号,例如 ZCU216中的 ZU49DR,其RF-DAC最大采样率是 9.85GSPS,如果想输出的信号中心频率在5.8G,它是如何有效输出在第二奈奎斯特区域范围的信号的。

weixin_44630490的博客 1551

从DBC到ARXML:详解DaVinci Configurator中通信栈的自动化配置逻辑

本文深入解析了Vector公司DaVinci Configurator工具如何将DBC文件自动转换为符合AUTOSAR标准的ARXML配置,详细介绍了从DBC到ARXML的映射逻辑、自动化配置的边界与陷阱,以及工程实践中的优化策略。帮助工程师高效配置汽车电子系统中的通信协议,提升项目开发效率。

weixin_30279671的博客 717

实验二 典型排序算法训练:快速排序、计数排序

算法导论实验二 典型排序算法训练:快速排序、计数排序主要就是对常见的排序算法快速排序和计数排序进行一个实践

enheihei的博客 560

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2932

计数排序 (算法导论 p98)

计数排序是一种算法复杂度 O(n) 的排序方法,适合于小范围集合的排序。比如100万学生参加高考,我们想对这100万学生的数学成绩(假设分数为0到100)做个排序。我们如何设计一个最高效的排序算法。本文不光给出计数排序算法的传统写法,还将一步步深入讨论算法的优化,直到时间复杂度和空间复杂度最优。 先看看计数排序的定义 Counting sort (sometimes referred to a

sunhui8888的专栏 1249

Pwntools不只是PWN:用它写个自动化Fuzz脚本,挖掘Linux命令行工具漏洞

本文探讨了如何利用Pwntools构建自动化Fuzz脚本,挖掘Linux命令行工具中的漏洞。通过详细的代码示例和实战案例,展示了Pwntools在Fuzzing中的高效性和灵活性,特别适合快速验证特定场景的安全问题。文章还提供了进阶技巧和避坑指南,帮助安全研究人员快速上手并提升测试效率。

weixin_28718345的博客 221

《广告核心指标驱动的AI投放系统:从数据洞察到智能决策的全链路优化》

本方案通过构建广告核心指标驱动的AI投放系统,实现从数据采集到智能决策的全链路自动化。

专注Java领域与微服务架构,热爱人工智能与深度学习 1068

排序1:快速排序(三种)、归并排序、计数排序

快排挖坑法、前后指针法、hoare法、归并排序递归和非递归写法、计数排序

myscratch的博客 1303

fpga进阶--时序约束

1、基础概念 1.1 建立(setup)/保持(hold)时间 上述的锁存沿会将数据保存下来,但是必须要满足一定的条件: 建立时间Tsu:在时钟有效沿之前,数据必须保持稳定的最小时间; 保持时间Th:在时钟有效沿之后,数据必须保持稳定的最小时间; 1.2 亚稳态(Metastability) 亚稳态是由于违背了触发器的建立和保持时间而产生的,设计中任何一个触发器都有特定的建立和保持时间,在时钟上升沿前后的这段时间窗口内,数据输入信号必须保持稳定。如果信号在这段时间内发生了变化,那么输...

HHH的博客 2443

【数据结构】排序算法(二)—>冒泡排序、快速排序、归并排序、计数排序

本篇文章博主将继续带来排序算法实现,主要讲解交换排序思想中的冒泡排序、三种快速排序递归版和一种非递归版,归并排序中的递归版和非递归版,以及计数排序的相关内容,包括逐步优化过程与思路详解,进来包会,不会T我。

℉f的博客 4732

裸眼3D技术发展与应用前景

这项技术利用传感器或摄像头实时监测观众的位置和视角,然后根据观众的位置信息动态调整投射的图像,确保不同位置的观众都能看到一致的3D效果。这种技术不仅可以在电影院和家庭影院中应用,还可以用于虚拟现实设备和大型展览等领域。裸眼3D呈现是一种不需要佩戴任何特殊设备(如3D眼镜或头盔)即可观看到3D效果的技术。这种技术近年来得到了快速发展,为观众带来了更加沉浸式的视觉体验。总之,裸眼3D呈现技术的发展为观众带来了更加真实、沉浸式的视觉体验。随着技术的不断进步和创新,相信未来裸眼3D将会在更多领域得到应用和推广。

学无止境 1995

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

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)

leetcode,排序算法,冒泡排序,python,timeit(),选择排序算法 快速排序,插入排序,归并排序,计数排序

是安澜啊 2303

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

排序算法 [ 基于Python语言 ] 冒泡排序 快速排序 堆排序 计数排序 桶排序

目录本文主要介绍了数据结构中常见的排序算法:冒泡排序(鸡尾酒排序) 快速排序(分治法) 堆排序(大顶堆) 计数排序 桶排序 (使用的是Python语言);以及各个算法之间的比较(稳定性 时间复杂度 空间复杂度等)4.1 分类1.时间复杂度为O(n^2)2.O(nlogn)3.时间复杂度为线性4.2 冒泡排序及其改进(鸡尾酒排序)4.2.1 冒泡排序4.2.2 鸡尾酒排序4.3 快速排序4.3.1 分治法 基准元素的选择4.3.3 元素的交换1.双边循环法2.单边循环法4.4 堆排序(不稳定排序)

2301_77892626的博客 1243

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

常考排序算法总结(插入排序,希尔排序,快速排序,归并排序,计数排序)

文章目录一.插入排序二.希尔排序三.快速排序四.归并排序五.计数排序 一.插入排序 当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移 具体流程在图中已经画出 插入排序在最坏的情况的时间复杂度是多少呢? 最坏的情况很显然是逆序的情况,要想有序,第二个数需要移动1次,第三个数需要移动

DR5200的博客 1442

C++排序算法(上)冒泡排序、计数排序、选择排序、快速排序、堆排序

前言冒泡排序法。

u014136435的博客 377

常见排序算法(三)(快速排序、归并排序、计数排序)

本文介绍排序算法中的快速排序、归并排序、计数排序,并对每种排序算法进行了分析,附带java实现代码。

柯南的博客 4080

10种排序算法笔记总结(三)快速排序、归并排序、计数排序和基数排序

⑦快速排序:该算法采用了一种分治策略,基本思想是取待排序对象序列中某个对象为基准(比如第一个对象),按照该关键码的大小,将整个对象序列划分成左右两个部分:左侧子序列中所有元素关键码值都小于或等于基准元素关键码值,右侧子序列中所有元素关键码值均大于基准元素关键码值,基准对象排在这两个子序列的中间,然后分别对两个子序列重复上述方法,直到完成为止。可以归为4个步骤:假设有一个待排序数组array(1)如...

小鲨鱼的博客 1116

数据结构系列之排序算法(归并排序,快速排序,计数排序,基数排序)

【Merge Sort】 Merge Sort,即归并排序,先将Array逐步分裂到最小单位(即每个单位只包含一个元素), 再逐步将各个最小单位排序后逐渐合并至最大单位(即包含全部元素)。 假设我们现在有Array = [801,512,123,334,645, 1356], 我们想将其按从小到大的顺序排序。元素的上标是其index。 (1) 首先,我们需要将Array逐步分裂至最小单位。分裂的具...

weixin_41909603的博客 614

常见排序算法详解:插入,冒泡,希尔,选择,快速排序,归并,计数排序,堆排序(已完结)

一.插入排序 void PrintArray(int* a, int n) { for (int i = 0; i < n; ++i) { printf("%d ", a[i]); } printf("\n"); } void Swap(int* pa, int* pb) { int tmp = *pa; *pa = *pb; *pb = tmp; } void InsertSort(int* a, int n) { for (int i = 0; ...

zhang_si_hang的博客 5200

深入浅出:从位运算、数据结构到算法与设计模式的全面技术指南“(第八节)排序算法(包括快速排序、基数排序、堆排序、计数排序、桶排序等)

收纳技术相关的Algorithm等总结!

weixin_45922644的博客 1741

排序算法--冒泡排序、选择排序、归并排序、快速排序、堆排序、计数排序

冒泡排序 最简单的排序,原理非常简单,只要当前数比后面的数大,就把当前数往后移,直到数组末尾。 def bubble_sort(arr): if len(arr) < 2: return arr j = len(arr) - 1 while j > 0: for i in range(j): if arr[i] > arr[i + 1]: arr[i], arr[i + 1]

yaogepila的博客 621

【优选算法】九大排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序)

【优选算法】九大排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序)

52Herzt的博客 1万+
上一篇: 《windows核心编程》读书笔记1-chapter1
下一篇: 传工信部将大力推进开源软件
普通网友
博客等级 码龄22年 1万+粉丝 2784原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值