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


mmi366127 (unknown)

學校 : 嘉義市私立嘉華高級中學
編號 : 67582
來源 : [163.27.13.253]
最後登入時間 :
2024-03-13 16:14:39
d713. 中位数 -- UVa10107加強版 | From: [36.237.134.185] | 發表日期 : 2018-04-05 12:19

#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
d713. 中位数 -- UVa10107加強版 | From: [220.135.116.184] | 發表日期 : 2018-04-05 12:53

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

 
 
ZeroJudge Forum