首页 > 试题广场 >

归并排序

[编程题]归并排序
  • 热度指数:2587 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
请编程实现一个整型数组的归并排序。本题会人工判断,请严格按照题目描述完成

输入描述:
一个无序的整型数组,输入格式见输入样例


输出描述:
一个有序的整型数组,输出格式见输出样例
示例1

输入

[3, 1, 4, 5, 17, 2, 12]

输出

[1, 2, 3, 4, 5, 12, 17]
这个输入给你100分
发表于 2017-08-30 21:32:03 回复(0)
a=list(map(int,input().strip('[').strip(']').split(',')))
print(sorted(a))
发表于 2021-09-03 21:06:48 回复(0)
#include<iostream>
#include<string>
#include<sstream>
#include<stdlib.h>
using namespace std;
int a[100005],n=0,i;
void mergeSort(int,int);
int main(){
    string in,x;
    //freopen("input.txt","r",stdin);
    getline(cin,in);
    stringstream ss(in);
    while(ss>>x){
        int dig=0,i,flag=0;
        for(i=0;i<x.length();i++)
            if('0'<=x[i]&&x[i]<='9') dig=dig*10+(x[i]-'0');
            else if(x[i]=='-') flag=1;
        a[n++]=(flag?-dig:dig);    
    }
    mergeSort(0,n-1);
    for(printf("["),i=0;i<n;i++) printf("%d%s",a[i],i==n-1?"]":", ");
}
void mergeSort(int l,int r){
    if(l>=r) return;
    int mid=l+(r-l)/2;
    mergeSort(l,mid),mergeSort(mid+1,r);
    int *tmp=(int *)malloc(sizeof(int)*(r-l+1)),c=0,i,j;
    for(i=l,j=mid+1;i<=mid||j<=r;)
        if(i>mid||j<=r&&a[i]>a[j]) tmp[c++]=a[j++];
        else tmp[c++]=a[i++];
    for(i=0,j=l;i<c;i++) a[j++]=tmp[i];
}

发表于 2017-11-01 10:15:08 回复(1)
public static void sort(int[] arr, int left, int right) { if (left < right) { // 中间值  int mid = (left + right) / 2;  // 左边到中值排序并合并  sort(arr, left, mid);  // 中值到右边排序并合并  sort(arr, mid + 1, right);  // 左边和右边合并, 每个递归过程结束,弹栈后左边和右边都会内部有序  // 左数组长度  int leftLen = mid - left + 1;  // 右数组长度  int rightLen = right - mid;  // 左数组  int[] leftArr = new int[leftLen];  // 右数组  int[] rightArr = new int[rightLen];  // 装载左边数组,(已排序合并完成)  for (int i = 0; i < leftLen; ++i)
            leftArr[i] = arr[left + i];  // 装载右边数组,(已排序合并完成)  for (int j = 0; j < rightLen; ++j)
            rightArr[j] = arr[mid + 1 + j];  // 进行最小值比较并合并到 arr 指定位置  int i = 0, j = 0, k = left;  while (i < leftLen && j < rightLen) { if (leftArr[i] <= rightArr[j]) {
                arr[k] = leftArr[i];  i++;  } else {
                arr[k] = rightArr[j];  j++;  }
            k++;  } // 比较合并完成,左边数组有剩余,剩余部分填充到 arr  while (i < leftLen) {
            arr[k] = leftArr[i];  i++;  k++;  } // 比较合并完成,右边数组有剩余,剩余部分填充到 arr  while (j < rightLen) {
            arr[k] = rightArr[j];  j++;  k++;  }
    }
}
发表于 2023-11-02 22:59:01 回复(0)
package MergeSortDemo;  import java.util.Arrays; import java.util.Scanner;  public class MergeSortDemo { public static  void main(String args[]){
        Scanner scanner = new Scanner(System.in);  int n = scanner.nextInt();  int[] arr = new int[n];  int[] tmp = new int[n];  for(int i = 0 ; i < n ; i++){
            arr[i] = scanner.nextInt();  } mergeSort(arr, 0 , arr.length-1 , tmp);  System.out.println(Arrays.toString(arr));  } public static void mergeSort(int[] arr , int left , int right , int[] tmp){ if(left < right){ int mid = (left + right) / 2;  mergeSort(arr , left , mid , tmp);  mergeSort(arr ,mid + 1 , right , tmp);  merge(arr,left,mid,right,tmp);  }
    } public static void merge(int[] arr , int left , int mid , int right,int[] tmp){ // 初始化i, 左边有序序列的头部初始索引  int i = left;  // 初始化j, 右边有序序列的头部初始索引, mid + 1  int j = mid + 1;  // 指向中转数组 temp 的当前索引  int t = 0;  // 1. 先把左右(有序)序列的数据按照规则填充到中转数组 temp  // 直到左右俩边的有序序列有一边处理完毕为止  while (i<=mid && j<=right){ if(arr[i] <= arr[j]){
                tmp[t] = arr[i];  t += 1;  i +=1;  }else{
                tmp[t] = arr[j];  t += 1;  j += 1;  }
        } // 2. 把有剩余数据的一边的剩余数据依次全部填充到 temp  // 2.1 说明左边有序序列还有剩余元素, 将剩余元素全部填充到 temp  while (i <= mid){
            tmp[t] = arr[i];  t += 1;  i += 1;  } // 2.2 说明右边有序序列还有剩余元素, 将剩余元素全部填充到 temp  while (j <= right){
            tmp[t] = arr[j];  t += 1;  j += 1;  }
        t = 0;  int tmpleft = left;  while (tmpleft <= right){
            arr[tmpleft] = tmp[t];  t += 1;  tmpleft += 1;  }
    }
}
发表于 2023-07-07 10:55:05 回复(0)
#include <iostream>
#include<vector>
#include<string>

using namespace std;


void merge_sort(vector<int>&ret,vector<int>&tmp,int left,int right)
{
    if(left >= right)
    {
        return;
    }
    int mid = left+(right-left)/2;
    merge_sort(ret, tmp, left, mid);
    merge_sort(ret,tmp,mid+1,right);
    int i=left,j=mid+1,k=0;
    while(i<=mid && j<=right)
    {
        if(ret[i] < ret[j])
        {
            tmp[k++] = ret[i++];
        }
        else
        {
            tmp[k++] = ret[j++];
        }
    }
    while(i<=mid)
    {
        tmp[k++] = ret[i++];
    }
    while(j<=right)
    {
        tmp[k++] = ret[j++];
    }
    for(i=left,j=0;i<=right;i++,j++)
    {
        ret[i] = tmp[j];
    }
}

int main() {
    vector<int>ret;
    string s;
    string str;
    getline(cin,s);
    int j=1;
    int i = 0;
    for(i=0;i<s.length();i++)
    {
        if(s[i]==',')
        {
            str = s.substr(j,i-j);
            ret.push_back(stoi(str));
            j = i+1;
        }
    }
    str = s.substr(j,i-j-1);
    ret.push_back(stoi(str));
    int n = ret.size();
    vector<int>tmp(n,0);
    merge_sort(ret,tmp,0,n-1);
    cout << "[";
    for(int i=0;i<n;i++)
    {
        if(i<n-1)
            cout << ret[i] << ", ";
        else
            cout << ret[i];
    }
    cout << "]";
}
// 64 位输出请用 printf("%lld")


发表于 2023-04-21 15:24:37 回复(0)
a=input()[1:-1].split(', ')
b=[]
for i in a:
    i=int(i)
    b.append(i)
print(sorted(b))
发表于 2022-08-22 16:08:27 回复(0)
s = input()
s = s.replace(',','').replace('[','').replace(']','')
s = list(map(int,s.split()))

print(sorted(s))
发表于 2022-06-02 16:01:01 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String str1 = str.substring(1,str.length()-1);
        String[] s = str1.split(", ");//分隔符为一个英文逗号和一个空格
        int[] arr = new int[s.length];
        
        for(int j = 0;j < s.length;j ++) {
            int num = 0;
            for(int i = 0;i < s[j].length();i ++) {
                if(s[j].charAt(i) >= '0' && s[j].charAt(i) <= '9') {
                    num = num * 10 + s[j].charAt(i)-'0';
                }
            }
            //负号情况考虑
            if(s[j].charAt(0) == '-') {
                num = -num;
            }
            arr[j] = num;
        }
        
        divide(arr,0,arr.length-1);
        //执行至此,arr已经变成有序的
        System.out.print("[");
        for(int p = 0;p < arr.length;p ++) {
            System.out.print(arr[p]);
            if(p != arr.length-1) {
                System.out.print(", ");
            }
        }
        System.out.print("]");
    }
    public static void divide(int[] arr,int left,int right) {
        if(left >= right) 
            return;
        //分而治之
        //取中间索引
        int mid = (left + right)/2;
        //分
        divide(arr,left,mid);
        divide(arr,mid+1,right);
        //治
        merge(arr,left,mid,right);
    }
    public static void merge(int[] arr,int left,int mid,int right) {
        int[] temp = new int[right-left+1];//建立临时数组
        int i = left;
        int j = mid + 1;//指向两个数组的起始位置
        int k = 0;//指向临时数组的起始位置
        while(i <= mid && j <= right) {
            if(arr[i] >= arr[j]) {
                //将更小的arr[j]放进临时数组中
                temp[k++] = arr[j++];
            }else {
                //将更小的arr[i]放进临时数组中
                temp[k++] = arr[i++];
            }
        }
        while(i <= mid) {
            //前一个数组还有剩余
            temp[k++] = arr[i++];
        }
        while(j <= right) {
            //前一个数组还有剩余
            temp[k++] = arr[j++];
        }
        //将临时数组中的值更新到原始数组中
        for(int p = 0;p < temp.length;p ++) {
            arr[left+p] = temp[p];
        } 
    }
}

发表于 2022-05-22 21:02:53 回复(0)
#include <bits/stdc++.h>
using namespace std;

void mymerge(vector<int>& nums,int left,int right,int mid)
{
    int l = left,r = mid + 1;
    vector<int> tem;
    while(l != mid + 1 || r != right + 1)
    {
        if(l == mid + 1)
        {
            while (r != right + 1) tem.push_back(nums[r++]);
        }
        else if(r == right + 1)
        {
            while (l != mid + 1) tem.push_back(nums[l++]);
        }
        else if(nums[l] > nums[r]) tem.push_back(nums[r++]);
        else tem.push_back(nums[l++]);
    }
    for(int i = left;i <= right;i ++)
    {
        nums[i] = tem[i - left];
    }
}

void mysort(vector<int>& nums,int left,int right)
{
    if(left == right) return;
    int mid = left + (right - left)/2;
    mysort(nums, left, mid);
    mysort(nums, mid + 1, right);
    mymerge(nums,left,right,mid);
}

int main()
{
    vector<int> nums;
    string input;
    getline(cin, input);
    int tem = 0;
    int flag = 1;
    for(char ch:input)
    {
        if(ch == ']') 
        {
            nums.push_back(flag * tem);
        }
        else if(ch >= '0' && ch <= '9')
        {
            tem = 10 * tem + ch - '0';
        }
        else if(ch == ',')
        {
            nums.push_back(flag * tem);
            tem = 0;
            flag = 1;
        }
        else if(ch == '-')
        {
            flag = -1;
        }
    }
    mysort(nums,0,nums.size() - 1);
    cout << '[';
    for(int i = 0;i < nums.size();i ++)
    {
        cout << nums[i];
        if(i == nums.size() - 1) cout << ']';
        else cout << ", ";
    }
    return 0;
}

发表于 2022-03-14 23:31:57 回复(0)
acm模式的输入居然还增加[]和逗号,真的是不标准
发表于 2022-03-11 23:15:28 回复(0)
C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
    int num;
    char k;
    char l;
}List;
int CleanStr(char str[]){
    int i,len=strlen(str);
    for(i=0;i<len;i++){
        str[i]='\0';
    }
    return 1;
}
int main()
{
    char str[10000]={'\0'};
    while(fgets(str,10000,stdin)!=NULL){
        char *p=strchr(str,'\n');
        *p='\0';
        int i,j,k=0,len=strlen(str),numlist[10000],h=0,flag=0;
        char temp[100]={'\0'};
        for(i=0;i<len;){
            if(str[i]>='0'&&str[i]<='9'||str[i]=='-'){
                if(str[i]=='-'){
                    flag=1;
                    i++;
                }
                while(str[i]>='0'&&str[i]<='9'){
                    temp[k++]=str[i];
                    i++;
                }
                k=0;
                if(flag==1){
                    numlist[h++]=0-atoi(temp);
                    flag=0;
                }
                else{
                    numlist[h++]=atoi(temp);
                }
                CleanStr(temp);
            }
            else{
                i++;
            }
        }
        for(i=0;i<h;i++){
            for(j=0;j<h-i-1;j++){
                if(numlist[j]>numlist[j+1]){
                    k=numlist[j];
                    numlist[j]=numlist[j+1];
                    numlist[j+1]=k;
                }
            }
        }
        CleanStr(str);
        printf("[%d, ",numlist[0]);
        for(i=1;i<h-1;i++){
            printf("%d, ",numlist[i]);
        }
        printf("%d]\n",numlist[h-1]);
    }
}
发表于 2021-11-15 00:11:41 回复(0)
package main

import (
    "bufio"
    "encoding/json"
    "fmt"
    "os"
    "strconv"
)
func main() {
    var input []int
    reader := bufio.NewReader(os.Stdin)
    s, err := reader.ReadString('\n')
    if err != nil {
        fmt.Println("err:", err)
    }
    err = json.Unmarshal([]byte(s), &input)
    if err != nil {
        fmt.Println("err:", err)
    }
    sort(input, 0, len(input))
    res := "["
    for i, v := range input {
        res += strconv.Itoa(v)
        if i != len(input) - 1 {
            res += ", "
        }
    }
    res += "]"
    fmt.Println(res)
}

func sort(arr []int, l, r int) {
    if l == r - 1 {
        return
    }
    mid := l + (r - l) >> 1
    sort(arr, l, mid)
    sort(arr, mid, r)
    p, q, i := l, mid, 0
    tmp := make([]int, r - l)
    for p < mid && q < r {
        if arr[p] < arr[q] {
            tmp[i] = arr[p]
            p++
        } else {
            tmp[i] = arr[q]
            q++
        }
        i++
    }
    for p < mid {
        tmp[i] = arr[p]
        i, p = i + 1, p + 1
    }
    for q < r {
        tmp[i] = arr[q]
        i, q = i + 1, q + 1
    }
    for j := l; j < r; j++ {
        arr[j] = tmp[j - l]
    }
}
发表于 2021-09-18 13:49:15 回复(0)
//非递归版本
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String str1 = str.substring(1,str.length()-1);
        String[] strs = str1.split(", ");
        int[] arr = new int[strs.length];
        for(int i = 0 ; i<arr.length ; ++i){
            arr[i] = Integer.parseInt(strs[i]);
        }
        mergaSort(arr);
        System.out.println(Arrays.toString(arr));
        
    }
    
    public static void mergaSort(int[] arr){
        for(int i = 1 ; i<arr.length ; i *= 2){
            int[] curArr = new int[arr.length];
            int s1 = 0;
            int e1 = s1+i-1;
            int s2 = e1+1;
            int e2 = s2+i-1>=arr.length?arr.length-1:s2+i-1;
            int k = 0;
            while(s2<arr.length){
                while(s1<=e1&&s2<=e2){
                    if(arr[s1]<=arr[s2]){
                        curArr[k++] = arr[s1++];
                    }else{
                        curArr[k++] = arr[s2++];
                    }
                }
                while(s1<=e1){
                    curArr[k++] = arr[s1++];
                }
                while(s2<=e2){
                    curArr[k++] = arr[s2++];
                }
                s1 = e2+1;
                e1 = s1+i-1;
                s2 = e1+1;
                e2 = s2+i-1>=arr.length?arr.length-1:s2+i-1;
            }
            while(s1<arr.length){
                curArr[k++] = arr[s1++];
            }
            for(int j = 0;j<curArr.length ; ++j){
                arr[j] = curArr[j];
            }
        }
    }
}

发表于 2021-09-01 16:39:00 回复(0)
importjava.util.Scanner;
importjava.util.Arrays;
publicclassMain{
    publicstaticvoidmain(String[] args){
        Scanner input = newScanner(System.in);
        String str1 = input.nextLine();
        int[] number = together(str1);
        System.out.println(Arrays.toString(number));
    }
     
    publicstaticint[] together(String str1){
        String str2 = str1.substring(1,str1.length()-1);
        String[] endstrs = str2.split(", ");
        int[] number = newint[endstrs.length];
        for(inti=0;i<number.length;i++){
            number[i]=Integer.parseInt(endstrs[i]);
        }
        for(inti=0;i<number.length;i++){
            for(intk=0;k<number.length-1-i;k++){
                if(number[k]>=number[k+1]){
                    inttmp = number[k];
                    number[k] = number[k+1];
                    number[k+1] = tmp;
                }
            }
        }
        return number;
    }
}
编辑于 2021-07-20 20:15:47 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <assert.h>

#define N 1000000 // 1百万

// ==================== Function Declaration ====================
// C99 标准库高仿函数
int str_len(const char * s);
void mergeSort(int* nums, int* tmpArr, int l, int r);
void merge(int* nums, int* tmpArr, int l, int m, int r);
void printNumbers(int* nums, const int numsSize);
// ==================== Function Declaration ====================

int main(const int argc, const char** argv) {
  int nums[N], numsSize = 0;
  
  char temp[10 * N]; // 设有一百万个整数,每个整数占10位
  gets(temp);
  
  char* line = malloc(10 * N * sizeof(char));
  strncat(line, temp + 1, str_len(temp) - 2);
  
  char* tok = strtok(line, ",");
  while (tok) {
    *(nums + numsSize++) = atoi(tok);
    tok = strtok(NULL, ",");
  }
  // Divide and Conquer algorithm 的经典应用 ---- merge_sort
  int tmpArr[N];
  mergeSort(nums, tmpArr, 0, numsSize - 1);
  return printNumbers(nums, numsSize), 0;
}

int str_len(const char * s) {
  assert(s != NULL);
  // corner case  
  if (*s == '\0') return 0;
  
  const char * pc = s;
  while (*++pc != '\0');
  return pc - s;
}

void mergeSort(int* nums, int* tmpArr, int l, int r) {
  // recursion exit condition (空集或只有一个元素就认为是有序的)
  if (l >= r) return;
  
  int m = (l + r) >> 1;
  mergeSort(nums, tmpArr, l, m);
  mergeSort(nums, tmpArr, m + 1, r);
  merge(nums, tmpArr, l, m, r);
}

void merge(int* nums, int* tmpArr, int l, int m, int r) {
  int i = l, j = m + 1, k = l;
  while (k <= r)
    if (i > m)
      *(tmpArr + k++) = *(nums + j++);
    else if (j > r)
      *(tmpArr + k++) = *(nums + i++);
    else
      *(tmpArr + k++) = *(nums + i) < *(nums + j) ? *(nums + i++) : *(nums + j++);
      
  memcpy(nums + l, tmpArr + l, (r - l + 1) * sizeof(int));
}

void printNumbers(int* nums, const int numsSize) {
  int i;
  putchar('[');
  for (i = 0; i < numsSize; ++i) {
    printf("%d", *(nums + i));
    if (i < numsSize - 1) printf(", ");
  }
  printf("]\n");
}

发表于 2021-07-06 12:32:33 回复(0)
用python处理这个输入还挺方便的
s = input().replace("[", "").replace("]", "")
nums = list(map(int, s.strip().split(", ")))

def merge(left, right):
    merged = []
    i = 0
    j = 0
    while(i < len(left) and j < len(right)):
        if left[i] <= right[j]:
            merged.append(left[i])
            i += 1
        else:
            merged.append(right[j])
            j += 1
    if i < len(left):
        merged.extend(left[i:])
    if j < len(right):
        merged.extend(right[j:])
    
    return merged

def mergeSort(nums):
    n = len(nums)
    if n <= 1:
        return nums
    mid = n // 2
    left = nums[:mid]
    right = nums[mid:]
    
    left = mergeSort(left)
    right = mergeSort(right)
    
    return merge(left, right)

print(mergeSort(nums))


发表于 2021-06-18 20:51:41 回复(0)
这个输入输出都能搞死个人
发表于 2021-06-03 11:42:09 回复(0)
import java.util.Arrays;
import java.util.Scanner;

//20210519  复习一下归并排序
//https://www.nowcoder.com/questionTerminal/23ed40416d9c4c72816edb12daa3bdff

//  输入格式:[3, 1, 4, 5, 17, 2, 12]
//  输出格式:[1, 2, 3, 4, 5, 12, 17]
		
		
		
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String allInput = sc.nextLine();
		String allInputNumString = allInput.substring(1, allInput.length()-1);  //消除左右两端的[和]
		String[] allNumsString = allInputNumString.split(", ");
		int[] allNums = new int[allNumsString.length];
		for(int i=0;i<allNums.length;i++) {
			allNums[i] = Integer.parseInt(allNumsString[i]);
		}
		//现在只使用allNums数组就可以了
		guibingSort(allNums,0,allNums.length-1);
		
		//还要输出出来
		System.out.println(Arrays.toString(allNums));
	}

	
	//归并排序  分 的方法
	private static void guibingSort(int[] allNums, int beginIndex, int endIndex) {
		if(beginIndex>=endIndex) {    //递归结束条件
			return;
		}
		int midIndex = beginIndex+(endIndex - beginIndex)/2;
		//左边再次分
		guibingSort(allNums,beginIndex,midIndex);
		
		//右边再次分
		guibingSort(allNums,midIndex+1,endIndex);
		
		//两边分好了,合起来  合并的范围就是  [beginIndex --- endIndex]
		getTogether(allNums,beginIndex,endIndex);
		
		
		
	}


	//合并两个有序数组
	private static void getTogether(int[] allNums, int beginIndex, int endIndex) {
		int[] helpArray = new int[endIndex-beginIndex+1];  //辅助空间
		int leftBeginIndex = beginIndex;  //左半边开始的下标
		int midIndex = beginIndex+(endIndex - beginIndex)/2;
		int rightBeginIndex = midIndex +1;  //右半边开始的下标
		int helpArrayIndex = 0;  //辅助数组的下标位置
		
		while(leftBeginIndex<=midIndex && rightBeginIndex<=endIndex) {
			if(allNums[leftBeginIndex]<=allNums[rightBeginIndex]) {  //稳定性!
				helpArray[helpArrayIndex] = allNums[leftBeginIndex];
				helpArrayIndex++;
				leftBeginIndex++;
			}else {
				helpArray[helpArrayIndex] = allNums[rightBeginIndex];
				helpArrayIndex++;
				rightBeginIndex++;
			}
		}
		//之后,把leftBeginIndex或者rightBeginIndex不到头的,都拷贝到辅助数组里面去
		while(leftBeginIndex<=midIndex) {
			helpArray[helpArrayIndex] = allNums[leftBeginIndex];
			helpArrayIndex++;
			leftBeginIndex++;
		}
		while(rightBeginIndex<=endIndex) {
			helpArray[helpArrayIndex] = allNums[rightBeginIndex];
			helpArrayIndex++;
			rightBeginIndex++;
		}
		//最后,将helpArray覆盖原数组allNums对应的位置,也就是[beginIndex---endIndex]的全部位置
		for(int i=0;i<helpArray.length;i++) {
			allNums[i+beginIndex] = helpArray[i];
		}
	}
}

发表于 2021-05-19 11:08:15 回复(0)
#--*coding:utf-8 --
importstring
fromcollections import deque
 
'''采用双端队列实现归并排序'''
defmergesort(lst):
    ifnotlst:
        return[]
    len_lst=len(lst)
    iflen_lst==1:
        returnlst
    defmerge(left,right):
        merged,left,right=deque(),deque(left),deque(right)
        whileleft andright:
            merged.append(left.popleft() ifleft[0]<=right[0] elseright.popleft())
        merged.extend(left ifleft elseright)
        returnlist(merged)
    middle=len_lst//2
    left=mergesort(lst[:middle])
    right=mergesort(lst[middle:])
    returnmerge(left,right)
lst=map(string.atoi,raw_input().strip('[]').split(",")[:])
printmergesort(lst)

发表于 2017-11-20 18:10:09 回复(0)