java数据结构之基础排序算法

Java基础50道经典练习题(22年新版) Java的基础练习。 阅读详情

    数据结构的三大基础排序算法:冒泡排序,简单选择排序,直接插入排序。下面我来解释:(一律是顺序排序)

首先是冒泡排序:他的排序主旨是把大的数依次排到最后,像冒泡一样,下面是代码:

public static void mp(int arr[]){
        int count;                                           //定义一个中间值,用来替换
        boolean flag = true;                                 //定义一个标记变量,用来检验是否已经有序
        for (int i = 0; i < arr.length && flag; i++) {       //进入外层循环 
            flag = false;                                    //把标记变成假
            for (int j = 1; j < arr.length-i; j++) {         //进入内层循环
                if(arr[j]<arr[j-1]){                         //两个数比较,如果前面的大于于后面的,则进行交换(顺序排序)
                    count = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = count;
                    flag = true;                             //如果进行了交换,则意味着还没排好序
                }
            }
            System.out.println(i+":"+Arrays.toString(arr));
        }
    }

第二是简单选择排序:他的排序主旨是每次选择一个最小的,根据角标放到前面

public static void xz(int arr[]){
        int count;                                     //定义一个中间变量用来跟最小的换值
        int min;                                       //最小值得角标
        for (int i = 0; i < arr.length; i++) {
            min = i;                                     
            for (int j = i+1; j < arr.length; j++) {
                if(arr[min] > arr[j]){                 //如果这个值不是最小的,那么交换角标,保证最小
                    min = j;
                }
            }
            if(min != i){                              //最小值与前方的值互换,顺序排序
                count = arr[i];
                arr[i] = arr[min];
                arr[min] = count;
            }
            System.out.println(i+":"+Arrays.toString(arr));
        }
    }

第三种是直接插入排序:他的排序主旨是把一个值插入到前面比他小的值得后边

public static void cr(int arr[]) {
        int i,j;
        for (i = 1; i < arr.length; i++) {
            int temp = arr[i];                                //定义一个存储角标为i的值,为将插入对象
            for (j = i - 1; j >= 0 && temp < arr[j]; j--) {   //判断是否为需要将其插入到前面,直到比他小
                arr[j + 1] = arr[j];                          //值向后移动,为将插入值腾出空位,即arr[j]
            }
            arr[j+1] = temp;                                  //插入到合适位置
            System.out.println(i+":"+Arrays.toString(arr));
        }
    }
    这三种简单的排序算法适用于,你待排序序列总是基本有序的。而其中当记录关键字本身信息量很大(比如:关键字是数十位的数字),那么简单选择排序就非常有优势。
数据结构与算法基础(java版) 前言 数据结构与算法是一门相对比较枯燥,但也是编程人员必学的课程。通过学习数据结构与算法,可以提高我们在编程中的思维逻辑;本人也是小白一枚,学习了一段时间后,在这边总结下;尽量以比较白话的方式,来进行更好的理解。 数据结构概述 数据结构可以简单的理解为数据与数据之间所存在的一些关系,数据的结构分为数据的存储结构和数据的逻辑结构。 存储结构 ... 阅读详情

相关推荐

Java面试题超详细讲解系列之五【数据结构与算法篇】

图例结合五万字超详细讲解数据结构与算法面试会遇到的那些题

白大锅的博客,毕设WangLoveBai_999 5088

Java程序获取和修改.wav音频文件的内部结构

(尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/79498075冷血之心的博客)       wav音频文件是一种无损的音频文件,相对于MP3来说音质较好,当然文件大小也很大。        A WAVE file is often just a RIFF file with a single “WAVE” chun...

冷血之心的博客 8855

java — Wave音频文件的属性获取及文件合成

java获取WAVE文件的属性及wave文件的多合一方法。需要的请下载~谢谢 我的blog也有方案

java 修改wav文件头_Java 程序获取和修改. wav 音频文件的内部结构

Java 程序获取和修改. wav 音频文件的内部结构wav 音频文件是一种无损的音频文件, 相对于 MP3 来说音质较好, 当然文件大小也很大A WAVE file is often just a RIFF file with a single WAVE chunk which consists of two sub-chunks a fmt chunk specifying the dat...

weixin_39902472的博客 982

Java数据结构和算法第二版\java数据结构和算法[1].(第二版).part1.rar

Java数据结构和算法第二版\java数据结构和算法[1].(第二版).part1.rar

【机器学习入门】1.4 吃透这些基本术语,才算真正入门

本文通过"挑西瓜"的生活案例,形象解释了机器学习的基本术语。样本对应单个西瓜,特征如色泽、根蒂等是观察维度,特征值是其具体表现,标签是西瓜的好坏判断。数据集是样本集合,特征向量是样本的数学表达,特征空间是所有可能的样本组合。文章强调数据集需划分为训练集、验证集和测试集,以评估模型的泛化能力。最后整理了术语对照表,并解答了常见问题。这些基础概念是理解机器学习的关键,建议读者重点掌握。

国科大硕士在读,分享Python/GEE/Matlab/R专业代码实践,涵盖数据分析、算法开发与应用技巧等,以代码会友。 654

Java数据结构与算法——希尔排序(插入算法优化)(算法效率测验)

希尔排序 我们看简单的插入排序可能存在的问题. 数组arr ={2,3,4,5,6,1}这时需要插入的数1(最小),这样的过程是: {2,3,4,5,6, 6} {2,3, 4,5,5, 6} {2,3,4,4, 5, 6} {2,3,3,4,5, 6} {2,2,3,4, 5, 6} {1,2,3, 4,5, 6} 结论:当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响. 希尔排序法介绍: 希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。 希尔排序

Pausch的博客 283

Vmware虚拟机克隆详解:固定ip + 修改uuid等内容

分两大步 设置固定ip 克隆后修改相关配置 本文引用的其他地方的图片。会附上链接 若侵权,删 一、设置静态ip 先进行虚拟网络的编辑 接下来的操作需要管理员权限。(给权限就完事了) 接下来设置网卡: 网络和共享中心→ 更改适配器设置→VMware Network Adapter VMnet8 -> 右键属性 修改TCP/Ipv4的配置,网上常见是这种,笔者是英文的...

Unknownfuture的博客 9070

【数据结构】基础排序算法(Java实现)

package com.paixu; class shuzu{ int length; int r[] = new int[100]; //创建数组 public void create(int a[]){ for (int i = 0;i<=length;i++){ ...

chuangjin1715的博客 139

Zemax操作--2(单透镜和双胶合透镜优化)

单透镜 要求 镜头数据里面的数量变化后要重新设计优化函数 设计 一、初始参数 按照要求输入波长、入瞳孔径、视场数据编辑器如图 物面--透镜前表面--透镜后表面--相面(镜头数据再插入一个面如图) 将2面曲率半径F数设置为10,zemax自动给出合适值 设置面2的边缘光线高度,zemax自动给出合适值 二、评价参数设置 将面1曲率半径设置为变量 再设置评价函数告诉zemax我们需要什么条件,评价函数默认即可 执行优化 双胶合透镜 要求 ...

lzy750750的博客 1万+

动态欧拉角与静态欧拉角:从理论到实践的深度解析

本文深度解析了动态欧拉角与静态欧拉角的核心区别与应用场景。静态欧拉角基于固定世界坐标系,适用于全局导航与三维场景编辑;而动态欧拉角基于物体自身坐标系,更符合飞行模拟、机器人控制等直觉操作,但需警惕其固有的万向节死锁问题。文章通过理论结合实战,帮助开发者在机器人、无人机及图形学项目中正确选用与处理旋转表示。

java5的博客 1073

JAVA基础篇--常见的数据结构和排序算法

常见的数据结构及排序算法

拽着尾巴的鱼儿的博客 988

GCdepth散点图绘制

基因组组装完成后,需要对组装结果进行评估,其中GC_depth图是一个比较重要的指标,改图的横坐标是GC含量,纵坐标是平均深度。以30k为窗口(window)无overlap计算其GC含量和平均深度。如果存在样品污染,通常能够从GC含量分析中呈现出来。下文探索了几种绘制GC_depth散点图的方法思路。

huangliangbo的专栏 8993

数据结构与算法篇——3种基础排序算法(Java版)

基础排序算法 本文主要介绍冒泡排序、选择排序和插入排序这3种基础排序算法。基础排序算法是学习希尔排序、快速排序等高级排序算法的基础,只有深刻掌握了前者,才有掌握后者的资格。比如希尔排序,就是增加了分组的插入排序。后续文章后会详细讲解高级排序算法,敬请期待。文章中如有失误,欢迎大家指出。 以升序,及从小到大排序为例,本文中3种排序算法都是以升序排序方式讲解。 假设 排序前的数据为:4,3,7,9,6 排序后的数据为:3,4,7,6,9 1.冒泡排序 大家可能都见过水烧开时气泡由锅底一个个冒出来的现象,这里冒泡

qq_43262128的博客 269

5.2.4_标志位的生成

计算机组成原理之标志位的生成

人生得意须尽欢 7584

真格量化-bs套利

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import time import numpy as np from copy import * #开始时间,用于初始化一些参数 def OnStart(context) : context.myacc = None #登录交易账号 if context.accounts["回测期权"].Login() : co.

qq_26742269的博客 1320

java基础复习笔记 数据结构_Java基础复习笔记基本排序算法

Java基础复习笔记基本排序算法1.排序排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究。而排序是计算机程序开发中常用的一种操作。为何需要排序呢。我们在所有的系统中几乎都要检索数据,而这些欲检索的数据如果有规律的话,比如按照某些字段、属性降序排序的话,那么从这些有规律的数据查询结果或者结果集的话就快速得多。2.常用算法常用的算法有:直接选择排序、堆排序、冒泡排序、快...

weixin_26905487的博客 183

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

我哎GIS博客 818

java实现数据结构基数排序_【数据结构】基础排序算法(Java实现)

package com.paixu;class shuzu{int length;int r[] = new int[100];//创建数组public void create(int a[]){for (int i = 0;i<=length;i++){r[i] = a[i];}}//展示数组public void display(){System.out.println("这里是展示数组...

weixin_32616931的博客 104

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java数据结构与算法--三种排序算法

1.代码package com.evior.demo3; /** * 数组的排序 */ public class Sort { /** * 冒泡排序 */ public void sortT1(int [] arr){ for (int i=0;i&lt;arr.length-1;i++){ for (int j...

evior 218

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

【java版】数据结构与算法分析学习之路【一】前言

一.数据结构和算法概述?【框范围】 基础数据结构主要包括表【数组+链表】、栈、队列【散列表】、树、图、堆。高级数据结构包括伸展树、红黑树、确定性跳跃表、AA树、treap树、k-d树、配对堆。常用的算法内容包括排序算法【插入排序+希尔排序+堆排序+归并排序+快速排序+桶式的排序+外部排序】、图论算法【最短路径算法】、其他【贪婪算法+分治算法+动态规划+随机化算法+回溯算法】、摊还分析【二

生命奇迹泉的专栏 2592

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

algorithms in java_GitHub - nntx/AlgorithmsInJava: 用Java实现基础数据结构,排序算法、经典算法以及leetcode刷题记录...

用Java实现算法和数据结构本项目主要用于自己在工作之余记录用Java实现的算法和数据结构的源码;同时还会记录自己刷leetcode的题解思路等;经典排序算法排序算法总结排序名平均时间复杂度空间复杂度优势劣势适用场景稳定性冒泡排序O(n^2)O(1)稳定插入排序O(n^2)O(1)稳定计数排序O(M)对于用例少的数据,比如对人的年龄排序或者身高排序。稳定基数排序O(d(n+r))O(M)稳定桶排序...

weixin_33525438的博客 282

50道JAVA基础编程练习题

50道JAVA基础编程练习题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class Prog1{ public static void main(Strin...

a768818702的博客 371

algorithms in java_GitHub - wensiyuanseven/AlgorithmsInJava: 用Java实现基础数据结构,排序算法、经典算法以及leetcode刷题记录...

用Java实现算法和数据结构本项目主要用于自己在工作之余记录用Java实现的算法和数据结构的源码;同时还会记录自己刷leetcode的题解思路等;经典排序算法排序算法总结排序名平均时间复杂度空间复杂度优势劣势适用场景稳定性冒泡排序O(n^2)O(1)稳定插入排序O(n^2)O(1)稳定计数排序O(M)对于用例少的数据,比如对人的年龄排序或者身高排序。稳定基数排序O(d(n+r))O(M)稳定桶排序...

weixin_28685483的博客 102

【Java数据结构与算法】基础篇(4):常用排序算法:冒泡、选择、插入、希尔、快速、归并、基数

本篇文章: 主要是关于java数据结构与算法的一些基本知识:常用排序算法:冒泡、选择、插入、希尔、快速、归并、基数、堆排序等【后续会补充堆排序】

qq_44366571的博客 478

排序算法概述

A:Java太烂了,不能直接操作硬件效率低,占内存,真不知道google为什么要用java来写Android上层。(A觉得估计是收了sun公司好处) B:C++简直坑爹,指针稍有不慎,就是埋下一个地雷,排查起来异常费劲,不知道什么时候就出现内存泄漏了。(B认为有些人到就是顽固不化) C:笑而不语。(薪水>A+B,出了苹果套装属性,典型高富帅) 。。。。。。。 诸如此类的争论...

weixin_30484739的博客 58
上一篇: 约瑟夫环问题
下一篇: 数据结构之快速排序优化版个人总结
wave_zf
博客等级 码龄9年 4粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值