When i execute the following query with execution plan.I could see that ‘sort’ is most costlist task.But i am not using any sort option in my query.Why it is happening?There is a nested loop join task exist before select.Also please let me know about merge join,hash join and nested loop join.

select
Ename from dbo.Employee e
where
Salary>(
select AVG(Salary) from dbo.Employee where
DeptId=e.DeptId
group by DeptId)
In your SQL query your actually sorting data into groups on your column ( Ename) Sort may be a performance bottleneck but you need to find out .If sorting is really causing a performance issue then you can move it to index as suggested by Aaaroon Bertrand .
The reaon for nested join is SQLserver actually executed 2 query to return back your result .
One is the Avg(Salary ) written in the sub query and another is an outer query which is selecting Ename from Employee Table which is done using Clustered index Scan .These 2 queries are then combined to return the desired result . It is basically comparing each row from the sub query to each row from the outer query which satisfies the predicate .
Merge join is only possible when you have index on the joining columns .Merge joins are some times very fast as they are already sorted .
For in depth explanation you can go through the below link
Nested join
Hash Join
Merge Join