#13668: TLE(1s) 優化後的insertion sort


mmi366127 (unknown)

學校 : 嘉義市私立嘉華高級中學
編號 : 67582
來源 : [96.63.200.99]
最後登入時間 :
2025-09-17 23:16:04

#include<vector>
#include<cstdio>
#include<algorithm>
using namespace std;
vector<int> a;

int n;
int len;
void in(int n)
{
    if(a.empty())
    {
        a.push_back(n);
        return;
    }
    int en=len-1,beg=0;
    int mid;
    while(beg<=en)//用二分搜插入新的數值 時間複雜度logn
    {
        mid=(beg+en)/2;
        if(a[mid]==n)
        {
            a.insert(a.begin()+mid,n);
            return;
        }
        if(a[mid]>n)
        {
            en=mid-1;
        }
        else
        {
            beg=mid+1;
        }
    }
    if(a[mid]<n)
    {
        a.insert(a.begin()+mid+1,n);
        return;
    }
    else
    {
        a.insert(a.begin()+mid,n);
        return;
    }
}


int main()
{
    a.clear();
    len=0;
    while(scanf("%d",&n)!=EOF)
    {
        in(n);
        len++;
        if(len%2) printf("%d\n",a[len/2]);
        else printf("%d\n",(a[len/2]+a[len/2-1])/2);
        //for(int i=0;i<len;i++) printf("%d ",a[i]);printf("\n");
    }
    return 0;
}


整體時間複雜度不是應該是nlogn嗎?
#13670: Re:TLE(1s) 優化後的insertion sort


icube (!@#$%^&*()_+)

學校 : 不指定學校
編號 : 61090
來源 : [220.135.116.184]
最後登入時間 :
2024-08-24 18:11:03

insert的操作就可能到O(n)喔