JAVA 2ms insertion sort
\npublic ListNode insertionSortList(ListNode head) {\n        ListNode dummy = new ListNode(Integer.MIN_VALUE);\n\t\tListNode curr = head;\n        ListNode pre
```\npublic ListNode insertionSortList(ListNode head) {\n        ListNode dummy = new ListNode(Integer.MIN_VALUE);\n\t\tListNode curr = head;\n        ListNode prev = dummy;\n\t\twhile (curr != null) {\n            //to save checking from start below condition is used\n            if(prev.val > curr.val)\n                prev = dummy;\n\t\t\t\n\t\t\twhile (prev.next != null && prev.next.val<curr.val) {\n\t\t\t\tprev = prev.next;\n\t\t\t}\n\t\t\t//insert current node between prev and prev.next \n\t\t\tListNode nextNode=curr.next;\n\t\t\tcurr.next=(prev.next);\n\t\t\tprev.next=(curr);\n\t\t\tcurr=nextNode;\n\t\t}\n\t\treturn dummy.next;\n\t}\n    \n\n```
['Linked List', 'Iterator', 'Java']