对一个链表进行插入排序

灰太狼 2022-05-23 02:50 281阅读 0赞

这里写图片描述

  1. class ListNode {
  2. int val;
  3. ListNode next;
  4. ListNode(int x) {
  5. val = x;
  6. next = null;
  7. }
  8. }
  9. public class Solution {
  10. public ListNode insertionSortList(ListNode head) {
  11. if(head==null||head.next==null)
  12. return head;
  13. ListNode tmp1=head;
  14. ListNode tmp2=head.next;
  15. while(tmp1.next!=null)
  16. {
  17. while(tmp2!=null)
  18. {
  19. if(tmp2.val<tmp1.val)
  20. {
  21. int tmp=tmp2.val;
  22. tmp2.val=tmp1.val;
  23. tmp1.val=tmp;
  24. }
  25. tmp2=tmp2.next;
  26. }
  27. tmp1=tmp1.next;
  28. tmp2=tmp1.next;
  29. }
  30. return head;
  31. }
  32. //打印链表
  33. public void printList(ListNode head){
  34. while(head!=null)
  35. {
  36. System.out.print(head.val+" ");
  37. head=head.next;
  38. }
  39. System.out.println();
  40. }
  41. public static void main(String[]args){
  42. // System.out.println("Hello Wolrd!");
  43. ListNode head=new ListNode(5);
  44. head.next=new ListNode(4);
  45. head.next.next=new ListNode(3);
  46. Solution s=new Solution();
  47. //s.printList(head);
  48. s.printList(s.insertionSortList(head));
  49. }
  50. }

发表评论

表情:
评论列表 (有 0 条评论,281人围观)

还没有评论,来说两句吧...

相关阅读

    相关 166-进行插入排序

    题目如下: 对一条链表进行排序算法,要求使用算法为插入排序,且时间复杂度符合O(n^2) 解题方法: 1、判断链表是否为空,为空直接返回 2、新建排序链表头和尾都