一个算法时间复杂度的有关问题,求大中小神!

一个算法时间复杂度的问题,求大中小神!!!!
问题:若指定有N个元素的矢量,则建立一个有序点链表的时间复杂度多少?


我刚学习算法,在研究数据结构,感觉这题不是很难,但是我就是无从下手,摸不着头脑,哪位大神帮帮忙,和我好好说说,还有就是,这数据结构如何学,特别是这算法时间复杂度的理解问题?
就比如这道题,,是先把算法写出来,再看吗?还是直接按规律些答案? 无从下手,,求大神大神!!!
------解决方案--------------------
纯粹的新建链表 应该是O(n)
------解决方案--------------------
有序的是nlog(n)把,每次二分法插入
------解决方案--------------------
新建链表,应该是O(n)

------解决方案--------------------
应该是二分法插入吧?
------解决方案--------------------
这个问题  首先的前提是必须说明是用那一种排序方法后才可以做出判断 楼主的题有一定的不确定性!!!
------解决方案--------------------
引用:
我知道了 ,谢谢大神 o(n*2)

你用插入排序建立的吧。
------解决方案--------------------
据我所知,链表上不能用二分插入吧。
插入排序,复杂度在最坏情况下,每次都插入最大值,复杂度是 O(N*N/2),最好情况,每次都插入最小值,复杂度是O(N)
------解决方案--------------------
12楼说的不差,如果是要有序,最好是用直接插入法创建链表,时间复杂度为O(N*N)
核心代码是这样的:
int[] nums={8,7,6,18,16,5,8};
Node head=new Node();//建立第一个节点
Node cur=new Node(nums[0]);
Node pre=head;//
for(int i=1;i<nums.length;i++)//从第二个数开始插入排序
{
   Node node=new Node(nums[i]);
   while(cur!=null)
   {
      if(node节点的值<cur的值)//插入中间的情况
      {
         node.next=pre.next;
         pre.next=node;
         break;
      }
      pre=cur;
      cur=cur.next;
   }
   if(cur==null)//当前i节点的值比已存在链表的节点值都大时,插入链表的尾部的情况
   {
    pre.next=node;
    cur=node;
    }
   //每次插入完成后,都要将pre和cur置为原始状态,方便下一次的循环比较
   pre=head;
   cur=pre.next;
}