当前位置: 首页 > news >正文

leetcode 147.对链表进行插入排序

1.题目要求:

给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。插入排序 算法的步骤:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
重复直到所有输入数据插入完为止。
下面是插入排序算法的一个图形示例。部分排序的列表(黑色)最初只包含列表中的第一个元素。每次迭代时,从输入数据中删除一个元素(红色),并就地插入已排序的列表中。对链表进行插入排序。

在这里插入图片描述

2.题目代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*///插入排序函数:void insert_sort(int* arr,int length){for(int i = 1;i < length;i++){if(arr[i - 1] > arr[i]){int temp = arr[i];int j;for(j = i - 1;j >= 0&&temp < arr[j];j--){arr[j + 1] = arr[j];}arr[j + 1] = temp;}}}
struct ListNode* insertionSortList(struct ListNode* head) {int count = 0;struct ListNode* cur = head;//查到结点数目while(cur){count++;cur = cur->next;}//创造数组int* number = (int*)malloc(sizeof(int) * count);int j = 0;cur = head;//把链表的节点存入数组中while(cur){number[j] = cur->val;j++;cur = cur->next;}//进行插入排序insert_sort(number,j);//把排序好的数组存入链表cur = head;j = 0;while(cur){cur->val = number[j];j++;cur = cur->next;}return head;
}

http://www.mrgr.cn/news/16301.html

相关文章:

  • RK3588 系列之1—串口连接
  • TQRFSOC开发板47DR ADC输入采集测试(二)
  • Mac下的压缩包和Win看到的不一样怎么办 Mac压缩后Win电脑看文件名会乱码
  • Python优化算法18——教与学优化算法(TLBO)
  • 百元蓝牙耳机品牌哪个牌子好?入围四大排名蓝牙耳机推荐
  • 贪心算法---单调递增的数字
  • 零基础Opencv学习(一)
  • 最新版 Lambda 表达式|万字笔记
  • 【初学人工智能原理】【14】机器学习:最后一节课也是第一节课(完结)
  • HTTP 缓存
  • 餐饮烧烤店拓客点餐外卖小程序渠道发展
  • c# 笔记 winform添加右键菜单,获取文件大小 ,多条件排序OrderBy、ThenBy,list<double>截取前5个
  • 影视会员充值API接口如何开发?
  • 写读后感的时候,可以适当地引用书中的内容吗?
  • Excel函数学习笔记
  • 2024最新最全:网络安全软件大合集(非常详细)零基础入门到精通,收藏这一篇就够了
  • 1.1 联盟链
  • 微服务框架二
  • 能力驱动的企业战略转型:基于能力规划的战略转型与数字化实践全指南
  • 8 自研rgbd相机基于rk3566之sensor图像解析与AWB算法原理