再求助一次,求大佬解答..

P1923 【深基9.例4】求第 k 小的数

山迟暮 @ 2021-07-26 12:47:43

感觉逻辑没问题,但是输出不来。

#include<bits/stdc++.h>
using namespace std;

int tmp[1005],a[1005];

void paixu(int begin,int end,int mid){
    int i,u,p;
    i = begin;u = begin;p = mid; 
    while(i<mid&&p<=end){
        if(a[i]<a[p]) tmp[u++] = a[i++];
        else tmp[u++] = a[p++];
    }
    while(i<mid)tmp[u++] = a[i++];
    while(p<=end)tmp[u++] = a[p++];
    i = begin; p = begin;
    while(i<=end) a[i++] = tmp[p++]; 
}

void anssort(int begin,int end){
    int mid;mid = (begin+end)/2;
    if(mid<1)return;
    anssort(begin,mid);
    anssort(mid+1,end);
    paixu(begin,end,mid+1);
}

int main(){
    int n,k;
    cin >> n >> k;
    for(int i = 0; i < n; i++) cout<<a[i];
    anssort(a[0],a[n-1]);
    cout<<a[k];
    return 0;
}

by DeusExMachina @ 2021-07-26 13:43:24

@zhou1108__ 可以加一些注释说明是干什么的吗?qwq


by 鲁锦聪 @ 2021-07-26 14:09:04

@zhou1108__ 看不懂……


by 山迟暮 @ 2021-07-26 14:42:01

@TheRedKiller_ 归并排序QAQ


by DeusExMachina @ 2021-07-26 15:01:27

@zhou1108__ 每一条语句是干什么的?我对归并排序并不太懂QAQ但是也很想看看qwq


by 天才颓废学家 @ 2021-07-26 18:34:25

anssort(a[0],a[n-1]);

这里不应该写为

anssort(0,n-1);

吗?


by 山迟暮 @ 2021-07-27 08:25:20

@天才颓废学家 没,就是这样写。


by 天才颓废学家 @ 2021-07-27 14:58:00

@zhou1108__

    for(int i = 0; i < n; i++) cout<<a[i];

cin ?

cout ?

我还是觉得应该写成 “ anssort(0,n-1); ”


by 山迟暮 @ 2021-07-27 15:54:12

@天才颓废学家 这写了没法运行,这条语句过不了


|