排序:直接插入排序与希尔排序与哨兵的JavaScript实现(C语言版在文章末尾)

C语言基本排序算法之插入排序与直接选择排序实现方法 主要介绍了C语言基本排序算法之插入排序与直接选择排序实现方法,结合具体实例形式分析了插入排序与直接选择排序的定义、使用方法及相关注意事项,需要的朋友可以参考下 立即下载

使用了JavaScript语言,可直接按f12,在浏览器控制台运行

直接插入排序:

function insertionSort(arr) {

  for (let i = 1; i < arr.length; i++) { //在arr[0,...,i-1]中插入arr[i]
    const toInsertValue = arr[i];/*比较目标*/
    let j;
    for (j = i-1; j >=0 && arr[j] > toInsertValue; j--) {/*j-1到0比较*/ 
      arr[j+1] = arr[j];
    }
    arr[j+1] = toInsertValue;
    //arr[j] = toInsertValue;一个符号能够将一个程序全弄错
    //内循环结束得到的arr[j-1]是第一个比arr[i]小的值,那么就把arr[i]存储在此处的arr[j]上。而之前的arr[j]已经在上一轮循环中存储到了arr[j+1]中
    
  }
}
var a=[1111,102,44,33];insertionSort(a);console.log(a)

希尔排序:(跨间隔比较)

希尔排序和直接插入排序一样,只不过是将1换成了d

shell 以531增量为例,算法是 达成增量有序的 使得序列基本有序 以插入

function shell_pass(arr) {
  var d=5;
  for (let i = d; i < arr.length; i++) { //在arr[0,...,i-1]中插入arr[d]
    const toInsertValue = arr[i];
    let j;/* */
    for (j = i-d; j >0 && arr[j] > toInsertValue; j-=d) {/*j-1到0比较*/ 
      arr[j+d] = arr[j];
    }
    arr[j+d] = toInsertValue;
   //arr[j] < toInsertValue 前小于后,直接对后边的赋值
 
    
  }
}

var a=[9,13,8,2,5,13,7,1,15,11];
shell_pass(a);
console.log(a)

在这里插入图片描述

function shell_pass(arr,d) {
  for (let i = d; i < arr.length; i++) { //在arr[0,...,i-1]中插入arr[d]
    const toInsertValue = arr[i];/*插入目标-哨兵*/
    let j;/* */
    for (j = i-d; j >=0 && arr[j] > toInsertValue; j-=d) {/*j-1到0比较*/ 
      arr[j+d] = arr[j];
    }
    arr[j+d] = toInsertValue;
   //arr[j] < toInsertValue 前小于后,直接对后边的赋值
 
    
  }
}
var d=[5,3,1];/*增量序列*/
var a=[9,13,8,2,5,13,7,1,15,11];shell_pass(a,d[2]);console.log(a);shell_pass(a,d[1]);console.log(a);

哨兵a[0]:

引入哨兵的好处:
不需要增加额外空间,保存当前待插入记录(不会因记录的后移而被占用)。
可以保证在内循环的由后向前的移动中,总可以在超出循环边界前找到一个等于当前的记录,起**“哨兵”**监视作用

function insertionSort(arr) {

  for (let i = 2; i <arr.length; i++) { //在arr[1,...,i-1]中插入arr[i]
    arr[0] = arr[i];/*设置哨兵*/
    let j;
    for (j = i-1;  arr[j] > arr[0]; j--) {
      arr[j+1] = arr[j];
    }
    arr[j+1] = arr[0];   
  }
}

var a=[0,1111,102,44,33];
insertionSort(a);
console.log(a)

在这里插入图片描述


直接插入排序C语言版(希尔排序将1换成参数即可):

void insertionSort(int arr[]){

	for(int j=1;j<4;j++){
	int temp=arr[j];
	  for(int k=j-1;k>=0;k--){
		  if(arr[k]>temp)arr[k+1]=arr[k];  
		  else{arr[k+1]=temp; break;}
	  }
	 
	}

	printf("加油");
}
matinal:S4 HANA 详解ACDOCA与BSEG的区别都在这了 当你在Coding Block中添加自定义字段的时候 阅读详情

相关推荐

《Long-CLIP: Unlocking the Long-Text Capability of CLIP》

总的来说,Long-CLIP是一个改进的视觉-语言预训练模型,它通过知识保留的位置上插值和主要成分匹配策略,有效解决了原始CLIP模型在处理长文本输入时的限制。这一模型不仅在长文本图像检索任务中表现出色,而且在零样本图像分类任务中保持了与原始CLIP相当的性能,同时还能以即插即用的方式增强图像生成任务中的长文本处理能力。

Angelina_Jolie的博客 1379

直接插入排序(带哨兵版)

排序

qiandididi的博客 1676

《YOLOv8实例分割实战:训练自己的数据集 》(视频课程)

本课程将手把手地教大家使用labelme标注和使用YOLOv8训练自己的数据集,完成一个多目标实例分割实战项目。

bai666ai的博客 790

直接插入排序(采用哨兵位)

采用哨兵位的直接插入排序,是要将待排序序列的第一个位置留出来设立为哨兵位置,所以需要注意的在定义序列时要多给一个空间。 这样做的好处就是不用设立临时变量。 代码实现如下: //哨兵位直接插入排序 void Sort(int* arr, int left, int right) { for (int i = left + 1; i < right; i++) //right即待排序序列元素个数 { arr[0] = arr[i];//待排序的值放到哨兵位 即arr[0] int end =

na 小子叫坚强的博客 2809

FPGA上跑100G网卡?手把手教你用Xilinx IP核配置RDMA(附避坑指南)

本文详细介绍了如何在Xilinx UltraScale+ FPGA平台上配置100G RDMA网络加速方案,涵盖CMAC和ERNIC IP核的深度配置技巧、硬件架构设计及系统集成。通过实战指南和避坑建议,帮助开发者实现超低延迟、零拷贝的数据传输,显著提升数据中心和高性能计算的网络性能。

weixin_33734785的博客 674

从Reset到Read:深入解析Rolling Shutter曝光流水线

本文深入解析Rolling Shutter(卷帘曝光)的工作原理,重点探讨Reset和Read信号在图像传感器中的关键作用。通过Reset-Read流水线机制,详细解释了曝光控制、时序调优及运动伪影补偿等核心技术,帮助读者理解卷帘曝光在高速摄影和动态场景中的应用。

weixin_42531925的博客 253

排序算法---选择排序

技术交流qq:1032492413 技术交流VX:Chamfion

偶然i的博客 324

使用OpenCV从低对比度图像中提取圆形轮廓

希望本文能帮助您从低对比度图像中提取圆形轮在本文中,我们将探讨如何使用OpenCV库从低对比度图像中提取圆形轮廓。低对比度图像通常指的是图像中的亮度差异很小,导致物体边缘不够清晰的情况。在本文中,我们将探讨如何使用OpenCV库从低对比度图像中提取圆形轮廓。低对比度图像通常指的是图像中的亮度差异很小,导致物体边缘不够清晰的情况。通过预处理图像并应用Hough变换,我们能够在低对比度图像中准确地提取圆形轮廓。通过预处理图像并应用Hough变换,我们能够在低对比度图像中准确地提取圆形轮廓。

ByteWhiz的博客 350

JS 遍历 哨兵模式优化

通过在遍历的时候,添加哨兵对数组进行优化,对比了下,在极限情况大概一千万条可以减少60%以上的遍历时间 // 遍历 const find = (num, key) => { let arr = [] for(let i = 0; i < num; i++) { arr.push(i) } const startTime = new Date() let i = 0 const n = arr.length while(i < n) { if( a

qq_38427709的博客 363

2026年佰维存储数字IC笔试试卷带答案

建立时间是有效时钟沿到来前,输入数据必须稳定保持的最短时间。保持时间是有效时钟沿到来后,输入数据必须继续稳定保持的最短时间。

Open 103

SPAD IMX479规格_VOP

对于VOP的定义,很多人可能是不理解这一路的供电,实际上这一路供电是非常重要的,这是给器件SPAD供电,决定SPAD是否work,在大部分的paper以及大部分公司,基本都是叫VOP,名称是SPAD breakdown voltage power supply,严格意义上叫Operating Voltage,工作电压。当然有些公司也有一些其他叫法就不提了。其实大家可以明显的看出,典型值-20.5没有发生变化,市面上绝大多数VOP的典型值也都是在-20V这边。

致力于lidar应用开发 701

数据结构与算法基础-学习-30-插入排序之直接插入排序、二分插入排序、希尔排序

本文介绍排序概念、排序方法分类、排序稳定性的意义、插入排序基本思想、直接插入排序(哨兵)、二分插入排序(哨兵)、希尔排序(哨兵)、排序源码、算法思路等。

qq_45111959的博客 2187

温度PID控制PLC程序

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

数据结构之希尔排序

数据结构之希尔排序: 算法思想: 每隔dk个元素取出待排序表中的元素,构成一组,分别进行直接插入排序,随着增量dk的不断减小,待排序表将基本有序。当dk=1时,即最后一次为直接插入排序。整个有序表将是有序的。 代码:#include<stdio.h> #define ElemType int #define maxsize 21 typedef struct { ElemType da

mmayanshuo的博客 440

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

常用排序算法之希尔排序

希尔排序 希尔排序并不能见名知意,因为希尔排序的名称起源于它的发明者Donald Shell。 基本思想:      希尔排序是每次比较相邻一定间隔的元素(而每次需要相邻多少个元素进行比较,是由一个增量序列来决定的。因此,希尔排序有时也叫做缩小增量排序),直到只比较相邻元素的最后一趟排序为止。因此使用希尔排序时,每趟排序先将所有元素按某个增量d分成若干组子序列,对每个子序列进

mazi的博客 553

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

排序问题——希尔排序

1、算法改进要点:直接插入排序法,在待排序的关键字序列基本有序且关键字个数n较少时,其算法的性能最佳。希尔排序又称为缩小增量排序法,是一种基于插入思想的排序方法,他利用了直接插入排序的最佳性能,首先将待排序的关键字序列分成若干个较小的子序列上,对子序列进行直接插入排序,使整个整个待排序序列排好序,在时间耗费上,比较直接插入排序法的性能有较大的改进,然后,在进行直接插入排序时,若待排序记录序列已经有

Din_Lei的博客 517

直接插入排序 C语言实现

假如在军训期间进行由高到底进行站队时,有一同学小明有事没到,但等他到时已经排好队,教官让他找到合适的地方站进去。当小明找到第五位同学,发现没他高,于是小明站在了该同学前面,后面的同学集体向后移动 基本思想:将一个数插入到有序的数列中 基本思路 将一组数据的第一个数据看作有序, ...

m0_47329175的博客 1419

C语言实现插入排序——直接插入排序(根据输入实时排序、不带哨兵排序、带哨兵排序)

直接插入排序 文章目录直接插入排序一、动态数组实现即输即排1.定义动态数组2.初始化动态数组3.增加动态数组长度4.排序算法5.实时输入数值并排序二、不带哨兵的数组直接插入排序三、带哨兵的数组直接插入排序项目完整代码运行效果图 一、动态数组实现即输即排 1.定义动态数组 #define InitSize 25 //定义动态顺序表 typedef struct { int *data; int MaxSize; int length; } DSqList; 2.初始化动态数组 //

酒醉浮生的博客 1238

直接插入排序——使用哨兵

直接插入排序——使用哨兵 直接插入排序,使用顺序查找法查找插入位置 使用哨兵是不仅可以暂存待插入元素,还有一个很好的功能就是防止数组下表越界。如果没有哨兵,for循环就会多一次判断数组下表有没有越界,所以使用数组下表能提高效率。 #include<stdio.h> #include<stdlib.h> int a[11]={0,3,78,67,45,90,34,6,35,90,98}; void InSertSort(int a[],int length) { int i,j;

weixin_42705436的博客 3552

内部排序(二)希尔排序的两种实现

上一篇日志讲到,对于直接插入排序法,如果要做改良,可以从两个方面入手,减少元素之间的比较次数和减少元素之间的移动次数。从减少元素之间的比较次数方面,我们可以用二分查找的思想,因为在直接插入排序的“寻找插入位置”这一过程,是一个查找过程,所以可以嵌入二分查找的方法来寻找插入位置,把直接插入排序改良成二分插入排序,这是减少了序列中元素之间比较的次数。那么如果想要减少元素之间移动的次数,怎么做? 希尔...

大力海棠的博客 1737

哨兵的作用

查找中免去越界判断        这种在查找方向的尽头设置“哨兵”免去了在查找过程中每次比较后都要判断查找位置是否越界的小技巧,看似与原先差别不大,但在总数据较多时,效率提高很大,是非常好的编程技巧。 代码一 int sequentialSearch(int* a, int n, int key) { int i; for (i = 1; i <=...

star的博客 4080

ES6类和哨兵的错误跟踪

In today’s tutorial, we’re going to focus on a real-world application of extending the Error prototype with ES6 classes and how we can use this for effective error tracing. 在今天的教程中,我们将专注于在实际应用中使用ES6类扩...

weixin_26750481的博客 265

编程思想 —— 哨兵的使用

LDA:Leading Dimension of A View topic - leading dimension? Clarification of the leading dimension in CUBLAS when transposing 完整的说法是:leading dimension of two-dimensional array(...

weixin_30732487的博客 964

冒泡排序、选择排序、插入排序(有无哨兵)、希尔排序,注释较全

冒泡排序、选择排序、插入排序(有无哨兵)、希尔排序,c和c++的详解 – #include <iostream> #include<stdlib.h> using namespace std; typedef struct{ int *arr; int length; }array_,*array__; //冒泡排序是交换排序。共进行length-1次排序...

TEN_Ares的博客 526

哨兵简介-哨兵原理

哨兵简介:由一个或多个Sentinel实例组成的Sentinel系统可监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器提升为新的主服务器,然后由新的主服务器代替已下线的主服务器继续提供命令请求,但是Sentinel还会继续监视下线的原主,当它重新上线时,将它设置为新主的从服务器。 Sentinel原理: 1...

weixin_30338497的博客 741

带哨兵java实现插入排序和希尔排序

参考:插入排序——基本插入排序与希尔排序(不带哨兵) 含义:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 插入排序(升序) ①先将第2个元素看作是有序区间,第二个元素开始后的元素看作未排序列,第一个作为哨兵; ②从第3个元素开始直至最后,先让待排数据与前面的有序区间的最后一个数据进行比较, 直到其插入到有序区间的合适位置(即,插入后有序区间保持有序...

weixin_41826973的博客 624
上一篇: ++a和a++的区别:哪个在前就先做哪个
下一篇: MRP计算html实现
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值