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

做企业网站需要人维护么接设计单的网站

做企业网站需要人维护么,接设计单的网站,天津有做网站不错的吗,视觉asp网站源码2018年第一次试着写单链表的快速排序。所使用的方法虽然代码非常简洁#xff0c;只有20行#xff0c;但可惜并不是纯正的快速排序#xff0c;而且使用的是数据交换也不是节点链接改变#xff0c;造成效率也有点问题。后来又于2022年重写单链表的快速排序。这一次想出了一种…2018年第一次试着写单链表的快速排序。所使用的方法虽然代码非常简洁只有20行但可惜并不是纯正的快速排序而且使用的是数据交换也不是节点链接改变造成效率也有点问题。后来又于2022年重写单链表的快速排序。这一次想出了一种很容易理的解方法且是比较纯正的快速排序了但可惜代码行数较多近60行了且其中引入了2个局部变量作为辅助并不那么干净。 以上这一切都记录在拙作《单链表的快速排序与归并排序》中了。这篇文章还另外介绍了单链表的归并排序 今天忽有兴趣重写一下单链表的快速排序。写之前没有看以前的代码使得思维并没有受到之前程序的影响。完成后只觉今是而昨非。现在的代码比之前的有了许多进步比如是纯正的快速排序了行数也由近60行缩减到39行了。虽然还觉得有哪里不那么完美奈何水平有限暂且如此吧。 算法本身不再介绍了但在贴出代码之前还是先介绍下具体写法。 首先这是一个函数比如就叫quick_sort_singly_linked_list吧。 第1个问题它返回的是什么有2种写法皆可。 第一种写法它返回一个Node *代表排序后的单链表的首节点 第二种写法它什么也不返回即返回值为void 这也是可以的因为可以将首节点作为一个参数放在参数列表中比如弄一个二级指针。 为简便起见这里还是采用大家耳熟能详的写法即返回Node *. 第2个问题它的参数是什么呢 可以和数组的快速排序做对比。因此应该有2个参数即 (Node * head, Node * tail). 这里的tail是取不到的即需要做排序的节点是在[head, tail)这个区间。这也符合一开始的时候tail为nullptr. 核心的做法是什么呢 使用指针p遍历[head, tail)指针h1代表第一个链表的首节点即所有小于等于head的节点组成的链表指针h1p代表第一个链表的游标因此其最后值代表第一个链表的最后一个节点指针h2代表第二个链表的首节点及所有大于head的节点组成的链表指针h2p代表第二个链表的游标因此其最后的值代表第二个链表的最后一个节点也即tail的前一个节点用nullptr作为h1和h1p的初始值因为一个链表里未必有比head小或等的节点用head作为h2和h2p的初始值一次遍历走完以后需要使用if (h1) h1p-next head;来把第一个链表和第二个链表连接成一个链表之后需根据h1是否为nullptr来判定如何进行递归处理普通情况下以(h1, head)和 (head-next, tail)分别对这2段链表进行递归的快速排序; 然后再用head-next p2;将递归后的2段结果进行连接p2为第二段链表递归调用的返回值若是h1为nullptr的情况则更简单只需对(head-next, tail)进行递归排序等于只是排除了head这一个元素因为它就是最小的最终返回的是递归后的第一个链表的首节点p1(若h1为nullptr, 则将递归的结果赋给head-next, 然后返回head即可 文字写出来实在是太罗嗦了。看代码则简洁很多。 #include iostream using namespace std;struct Node {int val;Node * next;Node(int v, Node * pnullptr) : val(v), next(p) {} };void print_linked_list(Node *p) {while (p) {cout p-val ;p p-next;}cout endl; }void delete_linked_list(Node *p) {while (p ! nullptr) {Node * tmp p-next;delete p;p tmp;} }// For [head, tail), put the head in the middle, so that, // left nodes head right nodes // Return: the latest head node of the singly linked list Node * quick_sort_singly_linked_list(Node * head, Node * tail) {if (head tail || head-next tail) return head;Node *h1 nullptr, *h1p nullptr;Node *h2 head, *h2p head;Node * p head-next; while (p ! tail) {if (p-val head-val) {if (h1) {h1p-next p;h1p p;}else { // h1 is nullptr, i.e. this is the first smaller nodeh1 h1p p;}}else { // p-val head-val h2p-next p; h2p p;}p p-next; }// Join the 2 linked list if (h1) h1p-next head;h2p-next tail; if (h1 nullptr) { // head is the minimum node in [head, tail)head-next quick_sort_singly_linked_list(head-next, tail);return head;}Node * p1 quick_sort_singly_linked_list(h1, head);Node * p2 quick_sort_singly_linked_list(head-next, tail);head-next p2;return p1; }void test_case_01() {Node * a1 new Node(10);Node * a2 new Node(5);Node * a3 new Node(8);Node * a4 new Node(20);Node * a5 new Node(26);Node * a6 new Node(18);a1-next a2;a2-next a3;a3-next a4;a4-next a5;a5-next a6;print_linked_list(a1);Node * h quick_sort_singly_linked_list(a1, nullptr);print_linked_list(h);delete_linked_list(h); }int main() {test_case_01();return 0; }(END)
http://www.pierceye.com/news/568974/

相关文章:

  • 主题资源网站建设作业高级网站开发工程师考试题
  • 含山建设局网站免费的个人简历模板文档
  • 门户网站建设推荐高校英文网站建设 文献综述
  • 织梦网站备案免费咨询网站
  • wordpress站内搜索插件网站管理程序
  • 网站建设友链交换自己电脑做网站iis
  • 全球优秀企业网站做原型的素材网站
  • 单页面营销网站怎么用polylang做网站
  • 网站开发入那个科目中国网站建设哪家公司好
  • 网站流量提升方案软件公司名称大全查询
  • 怎么做淘客专属网站济南公司网站推广优化最大的
  • 苏州网站建设极简幕枫织梦模板网站源码
  • 青岛网站设计定制2023传奇手游排行榜
  • 商务酒店网站建设淮南网备案查询
  • 菏泽炫佑网站建设中国城乡建设部网站
  • 网站开发与移动互联自助建站的优点与缺点
  • 公司做网站的好处上海网站设计找哪家
  • 个人如果做网站赚钱吗WordPress 聊天小工具
  • 商城网站建设哪家便宜网络架构师和网络工程师区别
  • p2p网站建设 深圳广东手机网站建设品牌
  • 亚马逊网上商城是正品吗长沙seo计费管理
  • 东莞品牌网站建设多少钱网站设计有限公司怎么样
  • dedecms新网站 上传到万网的空间浦口区网站建站公司
  • 龙岗在线网站建设西安房产信息网
  • 如何建立公司企业网站大朗做网站的
  • 怎么做整蛊网站wordpress系统的特点
  • php网站开发视频教程浙江建设局网站
  • 温州seo顾问温州网站优化排名推广
  • qq空间怎么做网站wordpress 分类名
  • 外贸国际网站推广重庆律师网站