`
jandroid
  • 浏览: 1918561 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Thinking in Insert Sort(插入排序)

 
阅读更多

今天重新开始阅读《算法导论》,之前虽然读过一遍,但是不是非常的深入,这是一个新的开始,希望在新的一次算法旅程中,收获更多心得!

首先我想说一下我对 插入排序 的理解,我对这个算法的分析与理解,总是在大脑中结合着衣服扑克牌,在算法的步骤中,实时滴更随着每一步操作,当需要排序或者调整某些牌的位置时,我会在头脑中做出调整,然后一步一步,最终达到自已预想和算法正确结果所预想的结果。

插入排序 - fangxia722 - 东东思考

算法实施的必要条件:

1.输入:N个数(a1,a2,a3....an);

2.输出:输入序列的一个排列(重新排序):(a1',a2',a3'....an'),使得a1'<=a2'<=a3'<=.....<=an'。


算法设计实现:

insert_sort----------------------->

for j <-----2 to length[a]

{

do key <----- a[j];

i=j-1;

while( i>0 && a[i]>key)

{

do a[i+1] <-----a[i];

i =i -1;

}

a[i+1]=key;

}


之前一直在想一个问题,其实对于即时输入的排序,我们是可以对插入排序做出优化的。

因为传统的插入排序在排序过程中对元素进行移动或者重新复制,这就增加了算法的操作时间,而且复制操作会对内存做一定操作,这些操作是非常耗费资源的。

所以,我在想,我们可以用链表设计实现这个范例,当有新元素需要排序插入时,我们就申请一个Node,然后对之前排序的队列遍历比较,找到适当位置,直接插入就行。而且再输入元素的过程中就实现了排序,当最后一个元素输入后,找到合适位置即可,这事得出的队列就是排序好的对列,相对于输入完后在排序有一定优势。而且在待排序数据量不确定的情况下,此方法还是有很多好处的。

分享到:
评论

相关推荐

    Thinking in C 录音版 part3

    Bruce Eckel是著名的计算机科学作家,其Thinking In系列是深受读者欢迎的经典著作,其中Thinking In C++/Java虽经一版再版,热度始终不减。除了Thinking In C++和Thinking In Java外,Bruce Eckel在大学授课时所将的...

    Thinking in java和Thinking in c++中文版

    《Thinking in Java》和《Thinking in C++》是两本非常经典的编程教材,由Bruce Eckel撰写,分别针对Java和C++这两种强大的编程语言。这两本书深入浅出地讲解了各自语言的核心概念和编程思想,适合初学者入门,也对...

    Thinking in Java 4th Edition Annotated Solutions Guide

    根据提供的文件信息,以下是对文件《Thinking in Java 4th Edition Annotated Solutions Guide》中所包含知识点的详细解释: 首先,文件标题《Thinking in Java 4th Edition Annotated Solutions Guide》指出了这是...

    Thinking in java .txt

    《Thinking in Java》第四版由布鲁斯·埃克尔(Bruce Eckel)撰写,他是MindView公司的总裁。这本书被广泛认为是学习Java编程语言的经典教材之一。从读者的反馈来看,《Thinking in Java》不仅覆盖了Java的核心概念...

    大象-Thinking in UML.pdf

    大象-Thinking in UML.pdf

    Thinking in C++.pdf

    ### Thinking in C++:深入理解面向对象编程与C++特性 #### 一、书籍概述 《Thinking in C++》是一本由Bruce Eckel撰写的经典著作,被广泛认为是学习和掌握C++语言及其面向对象编程思想的重要参考资料之一。本书...

    Thinking in C 录音版 part1

    Bruce Eckel是著名的计算机科学作家,其Thinking In系列是深受读者欢迎的经典著作,其中Thinking In C++/Java虽经一版再版,热度始终不减。除了Thinking In C++和Thinking In Java外,Bruce Eckel在大学授课时所将的...

    《大象 Thinking in UML 第2版》PDF版本下载.txt

    《大象 Thinking in UML 第2版》PDF版本下载

    Thinking in C++习题答案

    《Thinking in C++》是一本深受程序员喜爱的C++学习指南,由Bruce Eckel编写,旨在帮助读者深入理解和掌握C++编程语言。该书分为两卷,第一卷主要介绍了C++的基础知识,包括面向对象编程的基本概念,而第二卷则更...

    大象:Thinking in UML 清晰完整版pdf

    学习UML的必备书籍 潭云杰著 大象:Thinking in UML。 将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂...

    Thinking in Patterns中文版

    &lt;Thinking in C++&gt;&lt;Thinking in Java&gt;作者的又一力作。译得也很好,书中的代码Copy下来就可以直接运行。 这本书前一半是用JAVA语言来写的,后面一半用了多种语言合写的。 写得很通俗易懂,译得还是不错的。 Thinking...

    thinking in c++ src

    《Thinking in C++ Volume 2》是一本深受程序员喜爱的经典C++教程,由Bruce Eckel撰写,旨在深入探讨C++编程语言的高级特性和实践应用。这个压缩包包含的就是该书第二卷中的源代码示例。 C++是面向对象编程(OOP)...

    Thinking in embedded(嵌入式编程思想)Thinking in embedded(嵌入式编程思想)

    "Thinking in embedded"指的是深入理解嵌入式系统的特点,采用恰当的设计思路和编程策略来实现高效、可靠的代码。 嵌入式系统的核心是微处理器或微控制器,它们通常在资源有限的环境中运行,如内存限制、处理能力...

    Thinking in C++(1,2卷)

    《Thinking in C++》是Bruce Eckel所著的一套经典的C++编程教程,分为两卷。这本书深入浅出地介绍了C++语言的核心概念和技术,旨在帮助程序员从思考的角度理解和掌握C++,而不仅仅是记住语法。 卷一主要涵盖基础,...

    Thinking in Java 4 源码 导入IDEA可直接运行

    《Thinking in Java》是Bruce Eckel的经典之作,第四版(TIJ4)更是Java程序员必读的书籍之一。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程等众多主题。源码是...

    大象—Thinking in UML

    《大象——Thinking in UML》以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿《大象——Thinking in UML》的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的...

    Thinking in C 英文版

    《Thinking in C》是一本专为深入理解C语言而编写的英文原版书籍,适合在各种移动设备上阅读。该书以doc格式提供,便于读者随时随地学习和查阅。虽然提供的内容摘自《Thinking in C++ Volume 1, 2nd Edition》,但其...

    Thinking in C++中文版

    《Thinking in C++中文版》是一本深入学习C++编程语言的经典著作,旨在帮助读者全面理解和掌握C++的核心概念和技术。书中的章节涵盖了C++的关键主题,包括数据抽象、运算符重载、输入输出流、动态对象创建、继承与...

    Thinking in C: Foundations for Java &amp; C++

    Thinking in C: Foundations for Java & C++ by Chuck Allison produced by Bruce Eckel Chapter 1: Introduction and Getting Started40 MinutesStart Lecture Chapter 2: Fundamental Data Types41 ...

    Thinking in Java 练习题答案

    《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地介绍了Java语言的核心概念和技术。这本书的练习题是学习Java的重要组成部分,因为它们能够帮助读者巩固理论知识并提升实践能力。以下是对"Thinking in ...

Global site tag (gtag.js) - Google Analytics