插入法 排列 linked list
来源:互联网 发布:淘宝怎么看买家秀 编辑:程序博客网 时间:2024/06/08 02:23
package com.amaker.lalala;// write a class sort a linked list using insertion sort algorithm//解析 插入法 指针p 始终指向第一个未排好序的节点,在排好序的部分中找第一个比他大的q节点 然后通过节点的next 来重新排序linked list;//感觉 对linkedList 排序的算法 中此算法最容易理解 网上一堆该题算法 ,繁琐 难以理解。 class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } } public class SortLinkedList { public static ListNode insertionSortList(ListNode head) { ListNode root = new ListNode(0); root.next = head; ListNode q; ListNode r; ListNode p = head; while(p != null && p.next != null ){ if(p.val <= p.next.val ){ p=p.next; }else{ q = p.next; p.next = q.next; r = root; while(r.next.val <= q.val){ r = r.next; } q.next = r.next; r.next = q; } } return root.next; } public static void main(String[] args) { ListNode n1 = new ListNode(1); ListNode n2 = new ListNode(2); ListNode n3 = new ListNode(4); ListNode n4 = new ListNode(7); ListNode n5 = new ListNode(5); ListNode n6 = new ListNode(90); n1.next = n2; n2.next = n3; n3.next = n4; n4.next = n5; n5.next = n6; n1 = insertionSortList(n1); printList(n1); } public static void printList(ListNode x) { if(x != null){ System.out.print(x.val + " "); while (x.next != null) { System.out.print(x.next.val + " "); x = x.next; } System.out.println(); } } }
阅读全文
0 0
- 插入法 排列 linked list
- Linked List的基本操作(创建/删除/插入/查找)
- Linked List
- linked list
- linked list
- Linked List
- Linked List
- Linked List
- linked list
- Linked List
- Linked List
- Linked list
- Linked List
- linked list 倒转linked list
- Linked List->single linked list
- Linked List/Singly-Linked List/Doubly-Linked List
- 插入排列与绝对值排列
- Insert into a sorted circular linked list 环状链表 插入节点
- 动态顺序表(C语言实现)
- leetcode 42. Trapping Rain Water
- 解决oracle速度变慢
- angular2 Http请求
- [LeetCode] Unique Paths II 起点与终点确定的路径数II
- 插入法 排列 linked list
- Python基础(4)-文件操作
- Gradle版本管理-升级与降级
- hbase安装中遇到的一些问题及解决办法
- LeetCode 10. Regular Expression Matching
- python3 爬取深圳主板公司名称,公司网址
- 如何在sublime中使用sass
- xml解析
- 二叉排序树(二叉查找树)