C语言中qsort函数用法详解

C语言-qsort函数详解 目录 一.qsort函数是什么 二.使用qsort排序-以升序为例 关于void*型指针: 1.整形数组排序 2.字符数组排序 3.字符指针数组排序 4.结构体数组排序 5.浮点型数组排序 三.使用冒泡排序思想模拟实现qsort函数 1.什么是冒泡排序: 2.冒泡排序代码 3.使用冒泡排序思想模拟实现qsort函数 一.qsort函数是什么 我们可以使用搜索库函数网址或者MSDN软件进行查找。 qsort()函数:快速排序的函数 -引用stdlib.h头... 阅读详情

       很多初学C语言的人一般来说都会接触到排序算法,冒泡排序啦,选择排序啦,快排啦,这其中最好用最简明的就是快排,大多数C语言初学者对于这些排序算法一般采用手写,但是手写会浪费大量的时间而且可能会写错,C语言中其实已经将快排函数给我们封装了成一个库函数供我们使用,就不用我们自己写了,该库函数的名字为qsort包含在<stdlib.h>的头文件下,函数原型为:

     void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );

   这里显而易见的是这个函数有4个参数,其实这4个函数也比较明确。

   1.第一个是一个指针,也就是说你要排序的那个数组的地址。

   2.第二个是你要对这个数组排序的数量,是从数组的第一个位置开始的到这个数量的位置。

   3.第三个是你排序的这个数组中每一个成员所占的大小,用法很简单,这一给初学C语言的讲一下,这里需要调用一个C语言中的操作符来获取当前成员的大小,比如定义了一个int a[1000]的数组,获取其成员大小为sizeof(a[0])。

   4.这个参数就比较有意思了,你需要自己写一个比较函数来决定排序是升序还是降序排列,下面我就给出几乎是涵盖所有C语言中数据类型的排序的算法,默认给出的都是升序排序,降序排序参见注释。

   int类型

int num[100];

int cmp ( const void *a , const void *b )
{
return *(int *)a > *(int *)b ? 1 : -1;
//若是降序排序则
//return *(int *)b > *(int *)a ? 1 : -1;
}

qsort(num,100,sizeof(num[0]),cmp);
   double类型

double in[100];

int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b ? 1 : -1;
//若是降序排序则
//return *(double *)b > *(double *)a ? 1 : -1;
}qsort(in,100,sizeof(in[0]),cmp);


   char类型

char word[100];

int cmp( const void *a , const void *b )
{
return *(char *)a - *(char *)b;
//若是降序排序则
//return *(char *)b - *(char *)a;


}

qsort(word,100,sizeof(word[0]),cmp);

   结构体类型,这个类型其实就比较有意思了,有一种简单和和一种复杂的,下面先说简单的,就是按照你想排的那个数据进行排序,对于结构体中的其他数据都是随机排序的。

struct test
{
double data;
int other;
}s[100]


int cmp( const void *a ,const void *b)
{
return (*(test *)a).data > (*(test *)b).data ? 1 : -1;
//若是降序排序则
//return (*(test *)a).date > (*( test *)b).date? 1: -1;
}

qsort(s,100,sizeof(s[0]),cmp);
    
    这个第二种相对来说就比第一种看起来复杂好多了,其实用法大致相同,只不过在你选定的那个数据相同时,可以根据其他数据排序,这里给出一个简单的例子

   

struct test
{
int x;
int y;
}s[100];

//按照x升序排序,当x相等时按照y降序

int cmp( const void *a , const void *b )
{
struct test *c = (test *)a;
struct test *d = (test *)b;
//这里不难看出,若是升序则c中数据-d中数据,降序反之
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
}

qsort(s,100,sizeof(s[0]),cmp);

   字符串的排序
char s[5][5];
int cmp ( const void *a , const void *b )
{
//这是按照字典序进行排序
return strcmp( (char *)a ,(char*) b );
}
qsort(s,5,5*sizeof(char),cmp);
    这里给出最后一种,也就是结构体里的字符串排序


struct test
{
int data;
char str[100];
}s[100];

//按照结构体中字符串str的字典顺序排序

int cmp ( const void *a , const void *b )
{
return strcmp( (*(test *)a).str , (*(test *)b).str );
}

qsort(s,100,sizeof(s[0]),cmp);









        
自锁电路设计 Hi,uu们,是不是经常要用到自锁电路,通常不是使用555芯片就是用比较器来做自锁,今天我们来简单看下自锁电路的设计.图1采用了比较器构建了一个自锁电路,采用低电平复位,当需要复位的时候志需要将反向端的二极管拉低一下即可,免去 三极管控制同相端和电源短接的麻烦。图1:比较器构建的自锁电路也可以使用555去构建,如下图2所示.图2:使用555构建的自锁电路工作原理见555的真值表,真值表如表1所示.表1:555电路真值表相对来说555还是比较贵,所以我就想能不能有个便宜的方法做个自锁电路,构建电路如下图3所示 阅读详情

相关推荐

Decoder如何工作、Transformer如何训练、以及exposure bias问题

1、结合图文描述Decoder中各个模块是什么,以及是如何工作的。2、transformer是如何训练的。3、exposure bias问题造成的原因及解决方法

m0_59113542的博客 3345

C语言中的qsort函数(详解)

在C语言中对数据的排序方式有很多种:选择排序、冒泡排序、归并排序、快速排序。我们从名字去理解就知道快速排序是目前公认的比较好的一种排序算法。快速排序从名字就可以知道它的排序速度很快,为什么会比其他排序方式快呢?因为它在C语言库中已经实现了,我们在排序的时候只需要去调用它就行,这就是 qsort 函数(全称 quick sort),其声明在 stdlib.h 头文件中,它可以按照指定的比较函数对任意数据类型的数组进行排序,包括整型、浮点型、字符型甚至自定义的结构体类型。

m0_61315608的博客 1万+

基于STM32的简易电压、频率、占空比测量仪

任务详解:我们需要实现三个功能: 第一个是测频率的功能,输入信号为频率为1kHz~10kHz的三种波形(方波、三角波、正弦波),这也是我们最常见的三种波形。幅度是不需要测量的,所以先不关心幅度。 第二个是电压报警功能,当输入信号的幅度超过15V时,我们需要报警(这里我用了一个红色LED当报警器,有条件的还可以加个蜂鸣器)并且把此时的信号幅度显示在OLED屏幕上。 第三个是通信方式的要求,需要有串口通信功能。 第四个是计算占空比的任务,这个任务的输入是幅度为1V~10V、频率为20Hz ~1kHz的方波,需要

weixin_43469377的博客 7251

C语言库函数— qsort () 详解

C语言库函数qsort()详细介绍

qq_74009838的博客 1万+

LabVIEW波形图表时间轴设置:三种方法实现横坐标显示日期时间

在数据采集与设备监控场景中,波形图表的横坐标默认显示采样点序号而非日期时间,这给工程师分析历史数据带来不便。理解时间标识(Timestamp)的本质——一个自1904年起算的双精度秒数,是解决问题的关键。时间轴设置既是显示格式问题,更是数据层与显示层的协同设计。通过属性节点动态生成刻度标签、将时间标识数组直接作为X轴数据、或使用波形数据(Waveform)类型绑定t0与dt,分别适用于固定点数显示、非等间隔事件记录和等间隔连续采样等不同需求。合理选择方案并注意缓冲区预分配与时间连续性处理,可让波形图表准确呈

weixin_33416697的博客 253

word 2013 长篇文档排版案例教程

office 2013 制作长文格式模板

1万+

【C】在C语言中,如何使用qsort函数?(详解与模拟实现)

qsort函数的解析,使用举例和模拟实现

L931058893的博客 3655

学习记录(十一)--Pattern Recognition投稿记录

上一周特别忽然通知统计建模要答辩,确定是否晋级国赛,一直在准备答辩的事情,所以上一周没有总结周汇报,深刻检讨!!!不过结果是好的,我们组第二名晋级哦。这周主要是跟大家分享一下我投稿PR(Pattern Recognition)的一个时间线,以及投稿后的工作。一、PR从投稿到接收的时间线2025.4.3 Major Revision(ddl4.23) 当时正在弄比赛和另一个着急推进的文章2025.5.30 Minor Revision 这次小修基本上只有一些格式和简单一点点问题。

qq_54949944的博客 1918

C语言——qsort()函数_学习笔记

C语言qsort函数详解,以及采用冒泡排序算法模拟实现qsort函数

weil_li的博客 1359

uniapp [全端兼容] - 实现接入使用天地图及卫星视图切换功能,在国家天地图上自由切换地图显示类型(卫星视图/地形视图/卫星混合/地形混合/普通视图)天地图切换视图显示改成卫星风格,切换地图图层

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,天地图,视图,卫星,地图类型切换,uniAPP天地图,改成卫星视角,在线地图切换,来回切换卫星图,天地图如何实现来回切换卫星图,地形图,卫星视图,VUE3引入天地图卫星版,详细教程示例源码代码,天地图切换卫星用什么api,卫星视角API方法,vue3卫星天地图,能改地图的显示方式,vue3中使用天地图自定义样式切换地图图层,切换报错,加载出错,卫星图太卡,地图图层更换,vue3安装集成天地图详细示例源

🏆 前端领域优质创作者 1万+

SAP_SD模块路径及运输功能后台配置简介

后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。

我小时候很黑的博客 1397

C语言qsort函数的使用详解

qsort()函数是C语言库函数中的一种排序算法,其用到的排序思想是快速排序(quicksort)。它的独特之处在于可以排序任意类型的数组元素(整形、浮点型、字符串和结构体类型)。

@情话 1万+

线性自抗扰控制(LADRC)系统算法框图

NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-优快云博客本文介绍了如何将ADRC自抗扰控制算法从Simulink仿真应用到PLC控制中,包括Simulink框图、TD微分器模型、MATLAB函数的使用、SCL控制代码,以及非线性状态误差反馈控制率的实现。提供了详细的MATLAB仿真步骤和PLC源代码链接。ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法-优快云博客。

RXXW_Dor的博客 1463

c语言qsort函数以及qsort函数手动实现

qsort函数里面包含四个参数,第一个是void*base,它是一个指针,指向的是待排序的数组的第一个元素,第二个是size_t num,是base指向待排序数组的元素个数(size_t是指无符号整型类型),第三个是size_t size,是base指向待排序数组的元素大小,第四个是一个函数指针,指向的就是两个元素的比较函数。然后再创建bubble_sort函数,这个函数是我们实现qsort函数的关键,根据上面的定义得我们把arr(数组名是首元素地址),数组元素个数,数组元素大小,和函数指针依次放入里面。

2301_81286037的博客 1209

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C语言 快速排序——qsort函数详解

还在用冒泡排序吗!来试试万能的快速排序函数吧!

chara9885的博客 2万+

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

C语言中qsort函数的详解,以及模拟

  C语言中qsort函数的详解和模拟实现qsort函数,这里为了使用冒泡排序来模拟qsort函数

2401_88433210的博客 2099

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C语言——qsort函数

本文通过用冒泡排序模拟实现 qsort 函数,深入解析了其利用 void* 指针和函数指针实现通用排序的核心思想。

m0_68447088的博客 1223

C语言qsort函数使用方法大全

文章目录一、qsort函数简介二、qsort函数常用实例1.比较整型数组2.比较char数组3.比较double数组4.比较字符串4.1按首字母排序4.2按长度排序4,3按字典顺序5.结构体排序5.1 多级排序三、qsort深度剖析 一、qsort函数简介 排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等。 看名字都知道快速排序是目前公认的一种比较好的排序算法。因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。 这就是qsort函数(全称quicksort)。它是ANSI C标准中提供

qq_41854911的博客 1万+

c语言-qsort函数

qsort就是C语言中的快排函数,包含在stdlib.h头文件中,函数一共有四个参数,没有返回值。1.首先来了解一下什么是 void* ,这个是无具体类型的指针,void * 的指针是非常宽容的,可以接收任意类型的数据。常常用来临时存放数据,等到需要使用数据时,我们必须要强制类型转换成某一具体类型的数据,才能对数据进行操作。对void *pa,接收了一个整型 a 的地址,我们对指针pa 进行强制类型转换(int*),再解引用 pa即可对变量a 进行操作。

番茄的博客 1311

【C语言】_qsort函数

参考cplusplus.com,网址链接如下:kw=qsort其中各参数含义已作注释;

m0_63299495的博客 1250

【C语言】库函数qsort的使用

为什么库函数qsort中e1-e2的返回值大于0时,升序排序;反之降序?

学了就忘是正常现象 2653

【进阶C语言】qsort库函数(详解)

【C语言】qsort库函数的讲解,并利用qsort模拟实现冒泡排序,排序结构体数据,含有使用冒泡排序的思想来实现类似于qsort

m0_75058342的博客 2887

C语言小知识——qsort函数

文章目录一、qsort函数声明1.函数声明2.参数含义二、qsort函数用法1.构造compare函数2.数组元素也是数组?总结 一、qsort函数声明 qsort是C中自带的快速排序函数,属于标准库<stdio.h>,在做算法题时会比较常用。 本文参考菜鸟教程。 1.函数声明 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) 2.参数含义 base:

lijianyi0219的博客 2129

C语言指针(4):qsort函数

回调函数是指通过函数指针调用的函数。定义一个返回类型为void类型的函数calc,其参数是一个函数指针。当我们想在switch语句中调用Add、Sub、Mul、Div函数时,只要把函数名作为参数输入calc函数中,即可完成调用。

2501_90377063的博客 1881

C语言:qsort函数以及qsort函数模拟实现

1.了解qsort qsort函数是C语言中的一个标准库函数,它的头文件#include<stdlib.h>,用来对于数组内的元素进行快速排列。它可以对任意数据类型进行排列,但前提是要提供相应的比较函数即可。qsort原形是: void qsort(void *base,size_t nitems,size_t size,int (*compar)(const void*,const void*)) 1.base用来指向数组的指针,因为我们不知道比较的数据类型,所以用通用的数据类型voi

2301_80235470的博客 1286
上一篇: 关于移位词C语言做法的理解,以及对于字符字符串快排详解
下一篇: 并查集入门题畅通工程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值