leetcode之Insertion Sort List
来源:互联网 发布:网络db是什么意思啊 编辑:程序博客网 时间:2024/05/20 22:03
Insertion Sort List ,即用插入的方法排序链表。
主要思想:先从原始链表list摘掉一个节点,然后判断这个节点应该插入在sortedList的表头,中间,还是表尾。循环此步骤,直到原始链表为空。
源代码如下:
import java.util.Random;public class InsertionSortLinkedList {public ListNode insertionSortList(ListNode head){if(head == null || head.next == null)return head;ListNode sortedHead = head; //用p指向有序链表的第一个节点head = head.next;sortedHead.next = null;ListNode currentNode = null; //当前待插入的节点ListNode sortedNode = sortedHead; //游走在有序链表的指针ListNode preSortedNode = sortedNode; //sortedNode的前驱while(head != null){currentNode = head;head = head.next;currentNode.next = null; //把当前节点从原始链表中摘出来while(sortedNode != null && currentNode != null){if(sortedHead.val >= currentNode.val) //如果插入点在链表的开始处{currentNode.next = sortedHead;sortedHead = currentNode;//currentNode = null;break;}else if(sortedNode.val < currentNode.val){preSortedNode = sortedNode;sortedNode = sortedNode.next;}else{currentNode.next = preSortedNode.next;preSortedNode.next = currentNode;break;//currentNode = null;}}if(sortedNode == null) //插入点在链表表尾{preSortedNode.next = currentNode;}sortedNode = sortedHead;currentNode = null;}return sortedHead;}public static void main(String[] args){Random rand = new Random();ListNode head = null;ListNode currentNode = null;for(int i = 0 ; i < 10; i ++){if(head == null){head = new ListNode(rand.nextInt(47));currentNode = head;}else{currentNode.next = new ListNode(rand.nextInt(47));currentNode = currentNode.next;}}//System.out.println("ok!");InsertionSortLinkedList isll = new InsertionSortLinkedList();ListNode result = isll.insertionSortList(head);while(result != null){System.out.print(result.val + " ");result = result.next;}//System.out.println("ok!");}}//class ListNode {// int val;// ListNode next;// ListNode(int x) {// val = x;// next = null;// }//}
0 0
- leetcode之Insertion Sort List
- leetcode之Insertion Sort List
- leetcode之Insertion Sort List
- leetcode之Insertion Sort List
- LeetCode之Insertion Sort List
- leetcode之insertion Sort list
- leetcode之insertion-sort-list
- leetcode之insertion-sort-list
- leetCode解题报告之Insertion Sort List
- Insertion Sort List | leetcode
- Leetcode: Insertion Sort List
- [LeetCode] Insertion Sort List
- Leetcode: Insertion Sort List
- leetcode-Insertion Sort List
- [LeetCode]Insertion Sort List
- 【LeetCode】Insertion Sort List
- LeetCode | Insertion Sort List
- LeetCode - Insertion Sort List
- erlang 启动多节点
- 最大连续和问题及其拓展
- JAVA synchronized详解 实例
- 加密技术
- RFC6455-The WebSocket protocol 之一:1. Introduction
- leetcode之Insertion Sort List
- 把github上没提供部分支持库的的项目导入eclipse时发生错误的解决思路
- 江苏建设人才在线
- 当项目进度不能按照当初制定的计划来,应采用哪些管理措施来保证项目整体进度不被拖延?
- jQuery鼠标悬停放射出炫幻效果
- C Luo accept -200 ℃ cold treatment to eliminate fatigue, wonders! Feel like sex
- 如何在服务(Service)程序中显示对话框
- UNICODE编码下CFile写入文本(TEXT)
- NSString常用方法