`
Mr.Zhong
  • 浏览: 11734 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何在原链表上进行排序

阅读更多

如何在原链表上进行排序?
(链表中已经实现插入和删除操作)
1、使用双重循环实现冒泡排序,外层循环次数为元素个数,内层循环由0号位到结束,并且在每次外层循环结束后内层循环起始点加1。
2、内层循环比较取出当前所剩元素中的最小值,然后或获取最小值所在链表中的位置索引。
3、在外层循环中,通过内层循环得出的最小值索引取得该位置的节点,把该节点插入到链表的指定位置(开始为0,在每次外层循环后递增一,实现从小到大排序)。
4、插入完成后,把最小值索引值加一(因为前面插入新节点,长度增一),然后删除该节点。
5、依次循环,直到结束。


变量说明:
int a:内层循环获得的最小值所在位置的索引
int c=0:当前获取的最小节点的插入位置索引
i:外层循环计数
int b=0 :内层循环的起始点

 for(int i =1;i <= this.getLength();i++){
   获取a处的节点;
   获取的节点在c处插入;
   删除a+1处节点;
   b++;
   c++;
       for(int j=b;i<=this.getLength()-1;i++){
   获得最小值处的位置a;
  }  
 }

分享到:
评论

相关推荐

    链表的多种排序方法(word)

    - `DirectInsertSort`函数也接收链表的头指针,同样初始化一个指针`first`,但在排序过程中,原链表不会被破坏,而是直接在原链表上进行操作。 - 对于每个节点,函数会遍历已排序的部分,找到适当的位置将新节点...

    数据结构链表排序数据结构课设,链表排序,升序,逆序,倒置

    另外,也可以在原链表上直接进行操作,通过交换相邻节点的顺序达到逆序。 4. 倒置排序:倒置排序不同于升序和降序,它并不改变元素的大小关系,而是改变节点间的连接,使得链表的前后顺序反转。这可以通过双指针法...

    数据结构(2).doc

    数据结构是计算机科学中的核心概念,它涉及到如何有效地组织和管理数据,...这些知识点涵盖了数据结构的基本操作,包括链表操作、树的遍历、图的表示以及排序算法的实践应用,这些都是计算机科学基础课程的重要内容。

    数据结构链表倒排方法代码

    这种方法直接在原链表上进行操作,找到原链表的尾节点`last`,然后从表头开始,每次取出节点`p`,插入到`last`之后,直到遍历完整个链表。这种方法修改了原链表的结构,使其变为倒序。 3. 节点指针数组实现倒排...

    单链表就地排序程序

    - **空间复杂度**:由于是在原链表上进行操作,因此空间复杂度为O(1),满足题目要求。 - **时间复杂度**:采用的选择排序算法,时间复杂度为O(n^2),其中n为链表中节点的数量。 - **环形链表**:尽管题目要求是单向...

    很好的链表表实验报告要求和设计

    程序4和5涉及链表的合并,前者在原空间和另辟空间中合并两个单链表,后者将两个非递减有序的链表合并成一个非递减有序链表。这两个操作都需要考虑如何有效地合并节点和维护排序规则。 程序6和7分别考察链表的逆置和...

    单链表为存储结构, 实现二路归并排序的算法

    这意味着我们需要在原链表上进行操作,而不是创建新的链表副本。在合并过程中,我们仅修改节点的指针,而不涉及元素的复制或移动,这符合题目要求。 实现二路归并排序的算法时,需要注意以下几点优化: - **递归...

    不改变链表储存空间实现单链表的倒置

    本问题的目标是在给定的链表上进行倒置操作,即反转链表中节点的顺序。这一操作通常用于多种算法和数据处理场景,比如查找、排序等过程中需要临时对链表进行倒置。题目中的代码已经实现了链表的基本创建、插入、删除...

    abc.rar_ABC

    在实际实现时,可以使用辅助链表来帮助合并,避免在原链表上频繁地插入和删除操作,以提高效率。此外,归并排序的时间复杂度为 O(n log n),空间复杂度为 O(n),其中 n 是链表的长度。虽然空间复杂度相对较高,但其...

    数据结构排序的报告

    特别地,算法必须在原链表上进行操作,不允许使用额外的数组来辅助存储。此外,报告还提供了两种排序方法的选择——递增排序和递减排序。 #### 二、链表基础知识 **1. 链表结构简介** 链表是一种常见的线性表存储...

    2012年南京大学计算机系硕士研究生入学复试上机考试题

    这意味着函数需要在原链表基础上进行操作,而不是创建一个新的链表。 - 考虑到链表的特性,排序函数可能需要遍历整个链表,因此时间复杂度至少为O(n),其中n是链表长度。 5. **程序提交规范**: - 学生需要将实现...

    设head为单链表的头指针,将单链表中元素按递增顺序就地排列

    题目要求对单链表进行**就地排序**,即不借助额外的空间直接在原链表上完成排序。本例采用了冒泡排序算法来实现这一目标。 ##### 1. 冒泡排序算法原理 冒泡排序是一种简单的排序算法,通过重复遍历待排序列表,...

    算法大全-面试题-链表-栈-二叉树-数据结构.docx

    - 算法1:使用三个辅助变量`curr`、`next`和`nextnext`,在原链表上进行迭代,将`curr`的`Next`指针依次指向它的前一个节点,最后返回新的头节点。 - 算法2:递归方法,递归调用自身,直到遇到链表末尾,然后逐层...

    java-leetcode题解之第82题删除有序链表中的重复元素II.zip

    这个过程应当直接在原链表上进行,而不创建新的链表或数组。 解决这个问题的一个关键策略是使用双指针法。我们可以设置两个指针,一个快指针`fast`和一个慢指针`slow`。初始时,快指针`fast`指向链表的第二个节点,...

    BAT实习内推笔试卷

    时间复杂度要求为O(N),说明需要一次遍历即可完成排序,而额外空间复杂度为O(1),意味着不能使用额外的数据结构存储链表节点,只能在原链表上进行操作。 **知识点二:图的表示与处理** 第二个编程题目涉及图论的...

    几种排序算法,以及排序的算法[参照].pdf

    空间复杂度为O(1),因为可以在原数组上进行操作。 7. 希尔排序:希尔排序是插入排序的一种优化版本,通过比较距离较远的元素来减少不必要的交换。其时间复杂度不易精确计算,但通常在O(n^1.3)至O(n^1.5)之间。希尔...

    用单链表进行多项式的简单运算(加减法、求值)

    如果指数不同,就将项保留在原链表中。最后,我们将得到的结果链表作为新的多项式。 2. **多项式减法**: 减法与加法类似,只是将相同指数的项相减。如果被减多项式的某一项不存在于减数中,那么该项保持不变;...

    数据结构上机源码数据结构上机源码

    在这个名为“数据结构上机源码”的压缩包中,很可能是包含了多种常用数据结构的C++或Java实现,比如链表、栈、队列、树(二叉树、平衡树等)、图以及排序和搜索算法。 1. **链表**:链表是一种线性数据结构,其中...

    C语言课程设计.pdf

    新节点无需额外生成,而是直接在原链表上插入或更新。 - **减法**:类似加法,但系数相减。如果结果为负,需要考虑创建新节点插入到链表中。 5. **函数设计**: - **功能选择函数**:通过用户输入的数字调用不同...

Global site tag (gtag.js) - Google Analytics