链式直接插入排序

201672718:13:11
    假设用户数据为:[22,6,17,8]
    数据的存贮:pHead->[22]->[6]->[17]->[8]

    链式存贮结构来保存待排序的数据,首先创建一个链表,将待排序的所有元素存贮到链表中去,将待排序的链表分为两部分
    :有序子集和待排序子集,初始时有序子集中没有元素,令pSort->pNext = NULL,指针pCur指向待排序的链表节点,遍历待排序的子集

    如果有序子集为空,那么将pTemp = pCur;pCur = pCur->pNext;然后将pTemp所指向的结点插入到有序子集中pSort->pNext = pTemp;
    pTemp->pNext = NULL;
    如果有序子集不为空,那么设置一个qCur指针来遍历有序子集,从前往后遍历,初始时pCur = pSort->pNext,将pTemp所指向的结点中数据
    与pCur所指向的结点进行比较,
        1>如果比第一个小,就说明它比后面的一定小,它就是最小的,直接插入到第一个的前面,那么要插入到qCur所指向结点的前面,那么
        就应该在设置一个指针让其指向qCur前面的那个结点,这样才能确保将元素进行插入.
        2>如果比qCur所指向的元素大,就说明该元素应该放在qCur所指向元素的后面元素的某个位置,就pCur = pCur->pNext,如果发现小于
        pCur就直接执行1操作,
        __________________________________________________________________________________________________________________
        注意:如果pTemp所指向的元素比pCur指向的元素相等,为了保证排序的稳定性,那么它应该放在后面,即执行和大于相同的操作;
        __________________________________________________________________________________________________________________
        3>如果pTemp所指向的元素比有序表中的最后一个元素还要大,那么直接插入有序表的尾部,
        4>当待排序的元素遍历完毕的时候,该算法就执行完毕了;
#include<stdio.h>
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值