java中几种常见的排序法

多层感知机 Multilayer Perceptron | MLP 本文主要简单介绍了多层感知机的基本概念,优缺点,应用场景,建模时的注意事项,评价指标,实现方法,python示例和模型的参数等。 阅读详情

  日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。

以下常见算法的定义

  • 1. 插入排序:插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
  • 2. 选择排序:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
  • 3. 冒泡排序:冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端。
  • 4. 快速排序:快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
  • 5. 归并排序:归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
  • 6. 希尔排序:希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

1冒泡排序

冒泡排序应该是我们学习C语言开始最先接触的一个排序方式,其排序方式的主要思想为:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。


package paixu;
 
 
public class maopao {
 
    public static void main(String[] args) {
        
        int[] numbers  = {10,12,2,3,5,78,6,21,99,88};
        int len = numbers.length;
        for(int j =0; j<len; j++){
            for(int i = 0; i<len-1-j;i++){
                int temp = 0;
                //如果前面的数比后面的数大,则交换位置
                if (numbers[i]>numbers[i+1]){
                    temp = numbers[i+1];
                    numbers[i+1] = numbers[i];
                    numbers[i] = temp;
                }
            }
        }
        for (int i = 0; i<len; i++){
            System.out.print(numbers[i]);
            System.out.print(' ');
        }
            
            
    }
 
}


冒泡排序的时间复杂度为O(n*n),如果排序数组的长度比较大,不建议使用这种排序方式。


2插入排序

在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。


package paixu;
 
public class InsertionSorting {
 
    public static void main(String[] args) {
        
        int[] numbers  = {10,12,2,3,5,78,6,21,99,88};
        int len = numbers.length;
        
        for (int i = 1; i < len; i++){
            for(int j = 0; j < i; j++){
                int temp = 0;
                if (numbers[i] < numbers[j]){
                    temp = numbers[i];
                    //依次把numbers[m]的值赋给number[m+1]
                    for(int m = i-1; m > j-1; m--){
                        numbers[m+1] = numbers[m];
                    }
                    //交换number[i]和numbers[j]的值
                    numbers[j] = temp;
                }
            }
        }
        for(int i = 0; i <len; i++){
            System.out.print(numbers[i]);
            System.out.print(' ');
        }
 
    }
 
}


插入排序的时间复杂度:平均时间复杂度为O(n*n)

堆排序
3堆排序

堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆的定义如下:具有n个元素的序列(h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)时称之为堆。在这里只讨论满足前者条件的堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项(大顶堆)。完全二叉树可以很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个堆,这时堆的根节点的数最大。然后将根节点与堆的最后一个节点交换。然后对前面(n-1)个数重新调整使之成为堆。依此类推,直到只有两个节点的堆,并对它们作交换,最后得到有n个节点的有序序列。从算法描述来看,堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数实现排序的函数。

package sortdemo;

import java.util.Arrays;

/**
 * Created by chengxiao on 2016/12/17.
 * 堆排序demo
 */
public class HeapSort {
    public static void main(String []args){
        int []arr = {9,8,7,6,5,4,3,2,1};
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }
    public static void sort(int []arr){
        //1.构建大顶堆
        for(int i=arr.length/2-1;i>=0;i--){
            //从第一个非叶子结点从下至上,从右至左调整结构
            adjustHeap(arr,i,arr.length);
        }
        //2.调整堆结构+交换堆顶元素与末尾元素
        for(int j=arr.length-1;j>0;j--){
            swap(arr,0,j);//将堆顶元素与末尾元素进行交换
            adjustHeap(arr,0,j);//重新对堆进行调整
        }

    }

    /**
     * 调整大顶堆(仅是调整过程,建立在大顶堆已构建的基础上)
     * @param arr
     * @param i
     * @param length
     */
    public static void adjustHeap(int []arr,int i,int length){
        int temp = arr[i];//先取出当前元素i
        for(int k=i*2+1;k<length;k=k*2+1){//从i结点的左子结点开始,也就是2i+1处开始
            if(k+1<length && arr[k]<arr[k+1]){//如果左子结点小于右子结点,k指向右子结点
                k++;
            }
            if(arr[k] >temp){//如果子节点大于父节点,将子节点值赋给父节点(不用进行交换)
                arr[i] = arr[k];
                i = k;
            }else{
                break;
            }
        }
        arr[i] = temp;//将temp值放到最终的位置
    }

    /**
     * 交换元素
     * @param arr
     * @param a
     * @param b
     */
    public static void swap(int []arr,int a ,int b){
        int temp=arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }
}

堆排序的时间复杂度为:nlog2(n)


4快速排序

选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。


package paixu;
 
import java.util.Arrays;
 
 
public class QickSort {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] numbers = {10,12,2,3,5,78,6,21,99,88};
        int len = numbers.length;
        //如果数组大于2的时候才开始排序
        if(len>1){
            quickSort(numbers,0,len-1);
        }
        System.out.println(Arrays.toString(numbers));
    }
    public static void  quickSort(int[] list, int low, int high) {
        if(low < high){
            int middle = getMiddle(list, low, high);
            quickSort(list, low, middle - 1);
            quickSort(list, middle + 1, high);
        }
    }
    public static int  getMiddle(int[] list, int low, int high) {
        //将首元素作为参考元素
        int temp = list[low];
        while(low < high){
            while(low < high && temp <= list[high]){
                high--;
            }
            //当退出上一个while的时候说明temp>=list[high]
            list[low] = list[high];
            while(low < high && list[low] <= temp){
                low++;
            }
            //当退出上一个while循环的时候,说明list[low]>temp
            list[high] = list[low];
        }
        list[low] = temp;
        return low;
    }
}


快速排序的时间复杂度为:nlog2(n)


5归并排序

其核心思想就是将一个数组用递归的方法将其二分,直到分裂成为单个元素时,再将这些元素按照顺序排列组合成为新的数组。


package paixu;
 
import java.util.Arrays;  
  
public class mergingSort {  
int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};  
public  mergingSort(){  
    sort(a,0,a.length-1);  
    for(int i=0;i<a.length;i++)  
        System.out.println(a[i]);  
}  
public void sort(int[] data, int left, int right) {  
    // TODO Auto-generated method stub  
    if(left<right){  
        //找出中间索引  
        int center=(left+right)/2;  
        //对左边数组进行递归  
        sort(data,left,center);  
        //对右边数组进行递归  
        sort(data,center+1,right);  
        //合并  
        merge(data,left,center,right);  
          
    }  
}  
public void merge(int[] data, int left, int center, int right) {  
    // TODO Auto-generated method stub  
    int [] tmpArr=new int[data.length];  
    int mid=center+1;  
    //third记录中间数组的索引  
    int third=left;  
    int tmp=left;  
    while(left<=center&&mid<=right){  
  
   //从两个数组中取出最小的放入中间数组  
        if(data[left]<=data[mid]){  
            tmpArr[third++]=data[left++];  
        }else{  
            tmpArr[third++]=data[mid++];  
        }  
    }  
    //剩余部分依次放入中间数组  
    while(mid<=right){  
        tmpArr[third++]=data[mid++];  
    }  
    while(left<=center){  
        tmpArr[third++]=data[left++];  
    }  
    //将中间数组中的内容复制回原数组  
    while(tmp<=right){  
        data[tmp]=tmpArr[tmp++];  
    }  
    System.out.println(Arrays.toString(data));  
}  
  
}


归并排序的时间复杂度为:nlog2(n)
--------------------- 
原文:https://blog.youkuaiyun.com/YQlakers/article/details/69935673 

 

病理组学分析系列教程1:使用Python-histolab进行病理图像预处理,tiles切片自动生成 病理图像tiles自动生成,WSI图像预处理 阅读详情

相关推荐

告别付费!手把手教你用DataV.GeoAtlas获取全国街道级GeoJSON数据(附完整避坑指南)

本文详细介绍了如何免费使用阿里云DataV.GeoAtlas工具获取全国街道级GeoJSON数据。通过可视化选取、格式转换、数据校验等步骤,提供了一套完整的避坑指南和工作流,帮助前端和可视化开发者高效解决高精度地图数据获取难题,节省成本并提升开发效率。

weixin_29085865的博客 901

详解Java常用排序算法(10种,含演示动画)

Java常用的排序算法有以下几种: 1. 冒泡排序;2. 选择排序;3. 插入排序;4. 希尔排序;5. 归并排序;6. 快速排序;7. 堆排序;8. 计数排序;9. 桶排序;10. 基数排序。 这些排序算法都有各自的优缺点,应根据具体情况选择适合的算法。

不积跬步无以至千里,不积小流无以成江海。一个喜欢学习分享的程序员 3万+

Synopsys SpyGlass 进行 RTL 功耗估计

通过上述脚本,您可以使用 Synopsys SpyGlass 对纯 RTL 代码和带有 FSDB 波形的 RTL 代码进行功耗估计,并支持将 SDC 文件转换为 SGDC 文件。

yumingqinglong的博客 2186

排序算法总结及java实现

十种排序算法的基本特性: 排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性 快速排序 Ο(nlogn) Ο(nlogn) Ο(n2) Ο(logn) in-place 不稳定 归并排序 Ο(nlogn) Ο(nlogn) Ο(nlogn) Ο(n) out-place 稳定 堆排序 Ο(nlogn) Ο(nlogn) Ο(nlogn) Ο(1) i...

谬也的博客 543

EEGNet 网络代码解析与实战复现指南

本文详细解析了EEGNet这一轻量级卷积神经网络的结构与设计思想,重点阐述了其利用深度可分离卷积高效处理脑电信号的原理。文章提供了基于PyTorch的完整代码复现指南,包括网络搭建、数据模拟、训练调试及关键参数解析,旨在帮助读者掌握EEGNet的代码复现技巧,并将其应用于脑机接口等实际场景。

honey的博客 532

Arcgis空间分布方向性分析

Arcgis空间分布方向性分析 一、标准差椭圆方法概述 空间分布方向性分析是指区域经济属性在空间分布上的轮廓和主导方向。 标准差椭圆法是分析空间分布方向性特征的经典方法之一,使用标准差椭圆可 从全局的、空间的角度定量解释经济要素空间分布的中心性、展布性、方向性和 空间形态等整体性特征,因其直观性与有效性已得到广泛应用,已成为 Arc GIS 空间统计模块的常规统计工具。SDE 方法生成的结果为一个椭圆,从其生 成算法来看,首先用平均中心来确定椭圆的圆心,然后由平均中心作为起点 对 X 坐标

端木宛白的博客家园 4万+

【JAVA】常见的七大排序

本篇主要介绍常见的七大排序,实现语言为Java,其主要分为:直接插入排序,希尔排序,直接选择排序,堆排序,冒泡排序,快速排序,归并排序。在介绍七大排序之前我们先来认识一下排序的概念。

qq_63218110的博客 2936

OpenClaw智能体应用第一集--飞书多智能体配置

本文介绍了智能体(Agent)的核心概念与配置实践。Agent作为独立作用域的"大脑",包含模型(认知引擎)、记忆系统(短期/长期记忆)、人设(角色定义)、工具(外部能力调用)、规划执行(任务拆解)、运行环境等核心要素。每个Agent拥有唯一agentId标识,通过accountId区分渠道账号,Binding机制实现消息路由。实践部分展示了通过命令行配置多个智能体(如writer)的过程,包括插件注册和工具加载。系统支持多Agent架构,可根据不同场景需求灵活配置专属智能体。

weixin_44626085的博客 1747

8大Java排序方法(由简入繁),有代码详解和原理指导

Java8大排序方法

Byyyi耀的博客 4727

医疗 java 实战:2.HIS(医院信息系统)对接

HIS(医院信息系统)是医疗机构的核心管理系统,负责患者的挂号、医嘱、收费、病历管理等核心业务。为了与其他系统(如 LIS、PACS、EMR、医保系统)实现数据互通,HIS 需要进行多种方式的对接。:HIS 需要确保与 LIS、PACS、EMR 之间的数据实时同步,避免数据丢失或延迟。:医生在 HIS 开医嘱后,检验信息需要同步到 LIS,LIS 处理检验后返回结果。:HIS 与 LIS、PACS、EMR 交互患者信息、医嘱、检验报告。:HL7 V2.x 消息(ADT、ORM、ORU 等)。

weixin_44743723的博客 3282

字节系,ali系,ks,pdd最新抓包方案

各大厂安卓逆向

qq_38759383的博客 1145

java7种排序(需熟练掌握)

java7种排序算法 文章目录java7种排序算法@[toc]1.冒泡排序2.插入排序3.选择排序4.希尔排序5.归并排序6.快速排序7.基数排序(基于桶排序) 1.冒泡排序 public void bubbleSort(int[] array){ for (int i = 0; i < array.length-1; i++) { boolean flag=false; for (int j = 0; j <array.lengt

qq_53280986的博客 3639

手把手教你学Simulink--逆变器场景:基于Simulink的单相全桥逆变器PWM控制仿真建模

本文介绍了使用Simulink和Simscape Electrical库进行单相全桥逆变器PWM控制仿真建模的详细步骤。主要内容包括:从创建Simulink项目、添加电力电子组件、构建逆变器模型,到设置参数、运行仿真和结果分析。重点讲解了逆变器核心模块的配置、PWM信号生成、负载建模等关键环节,并提供了优化改进建议。该指南适用于电力电子初学者,通过仿真可以帮助理解单相全桥逆变器的工作原理和PWM控制技术,为实际应用和算法开发提供基础平台。

MHD0815的博客 666

Java实现几种常见排序方法

原地址为:Java常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、归并排序、二分排序、堆排序、计数排序等。 以下常见算法的定义 1. 插入排序:插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入排序的基本思...

weixin_34072857的博客 102

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

常见几种java排序算法

1.插入排序 public class InsertSort { public static void sort(int[] arr) { if (arr.length &amp;amp;amp;gt;= 2) { for (int i = 1; i &amp;amp;amp;lt; arr.length; i++) { //挖出一个要用来插入的值,同时位置上留下...

zzzgd_666的博客 10万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

几种常见的Java排序算法

几种常见的Java排序算法前言一、插入排序二、希尔排序三、冒泡排序四、选择排序五、堆排序六、快速排序七、归并排序 前言 本文介绍了Java中几种常见的排序算法 1.插入排序(插入排序,希尔排序) 2.交换排序(冒泡排序,快速排序(递归非递归)) 3.选择排序(选择排序,堆排序) 4.归并排序 一、插入排序 插入排序属于内部排序法,是对内部欲排序的元素以插入的方式移动到合适的位置 即把所有的元素看成两部分,一部分是有序的,另外一部分是无序的,刚开始有序的部分为一个元素,而无序的部分则为n-1个元素,排序的时

weixin_51601437的博客 6203

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

几种常见排序算法总结(java版)

代码如下: /*************几种常见的排序算法总结***************************/ package paixu; public class PaiXu { final int MAX=20; int num[]=new int[MAX]; { System.out.print("生成的随机数组是:"); for(int

zgrjkflmkyc的专栏 1万+

Java冒泡和选择排序法(有手就能学会)

Java排序常用的物种方法 相信很多小伙伴刚刚开始学习java这门语言的时候,都感觉各种各样的排序,对我们的小伙伴太不好友好了,看看这几种方法,你绝对能把它们按在地上摩擦,下面我将为大家说几种比较常见的方法,有的方法只要有手就能学会话不多说,看操作。 第一种:直接调用java内置方法:Arrays.sort(需要排序的数组); 在这里插入代码片 ...

客官不爱喝酒的博客 484

Java 几种排序法

  这里主要对8种排序算法做个总结,分别是插入排序,选择排序,冒泡排序,希尔排序,归并排序,堆排序,快速排序以及基数排序。 1、 插入排序 比较和交换的时间复杂度为O(n^2),算法自适应,对于数据已基本有序的情况,时间复杂度为O(n),算法稳定,开销很低,适合于数据已基本有序或者数据量小的情况。public void insertionSort() {// 插入排序

hlw881008 奕然风 848

选择类排序法

选择类排序法 (1)简单选择排序法,最坏情况需要n(n-1)/2次比较; 设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。该排序是不稳定排序。 //简单选择排序法 public class SimpleSelectSort { static int...

weixin_41924879的博客 866

Java排序法

Java排序法 快速排序法: public class MyQuickSort { public int[] theArray; public int nElem; public MyQuickSort(int max){ theArray = new int[max]; nElem = 0; } public void insert(int value){ theArr

TKJ510510的专栏 562

Java——常见的几种排序算法

一、冒泡排序 每次冒泡过程都是从数列的第一个元素开始,然后依次和剩余的元素进行比较, 跟列队一样, 从左到右两两相邻的元素比大小, 高的就和低的换一下位置. 最后最高(值最大)的肯定就排到后面了. 但是这只是把最高的排到后面了, 还得找出第二高的, 于是又从第一个开始两两比较, 高的往后站, 然后第二高的也到后面了. 然后是第三高的再往后排… public class JavaSort { public static void main(String[] args) { .

Vicky_Tang 1万+

Java的几种常见排序算法

Java的几种常见排序算法 对内部排序的理解 (全部针对升序,降序相反) 1、冒泡排序 依次比较相邻的连个元素,越小的越往前移动(冒泡)。 2、快速排序 通过一次排序将数据拆分成大小两份,其中一部分比另一部分都要小,然后对两部分进行排序,可以递归(两边调用同样的方法)进行。 3、选择排序 选出最小元素放在起始位置,然后从剩余的元素中找出最小元素放在末尾,依次类推直至结束。 4、插入排序 每一步将一个待排序的数据插入到前面已经排好序的有序序列中,...

kinbridge的专栏 1555

java数组排序法方法_JAVA数组中五种常见排序方法

前言:几种常用的JAVA数组排序方法的整合。法一:Arrays.sort()Arrays.sort()排序方法在java中是最简单且最常用的排序方法int []arr1= {45,34,59,55};Arrays.sort(arr1);//调用方法排序即可法二:冒泡排序简单来说,冒泡排序就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直...

weixin_31094177的博客 1622

java几种常见的排序算法总结

[java] view plain copy /*************几种常见的排序算法总结***************************/ packagepaixu; publicclassPaiXu{ finalintMAX=20; intnum[]=newint[MAX]; { ...

weixin_30686845的博客 65

力扣332 重新安排行程 Java回溯解法 集合排序法和map集合映射法两个角度深入解析

力扣第332题深入解析,从集合排序的回溯开始一步步优化,最终解析ma映射法的意义,让你清楚理解为什么要采取map和采取map映射的好处。

qq_17224327的博客 1624
上一篇: 字符串的一些基本操作及函数
Small_Smart_boy
博客等级 码龄10年 2粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值