原文地址:【数据结构与算法】—— 二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 二分介绍 前面介绍了,不多说 查找思路 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后...

原文地址: 【数据结构与算法】—— 插入排序 插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个...

原文地址: 【数据结构与算法】—— 选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 介绍 上面介绍过了...

原文地址: 【数据结构与算法】—— 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢&l...

目录 一、问题描述 二、思路分析 三、代码实现 3.1  情况1对应的代码 3.2  情况2对应的代码 3.3  情况3对应的代码 四、总结 一、问题描述      A:假设一个含有n个元素的数组,采用二分查找的方法寻找某个元素; 二、思路分析      A:通过简单的数组进行推导,可以分...

哥德巴赫猜想 哥德巴赫猜想概述: 任何一个≥6之偶数,都可以表示成两个奇质数之和 那么,接下来,我们就来研究研究哥德巴赫猜想的验证及优化方案: 第一步,先建立头文件 “mec.h”(建立头文件的目的:简化程序,使程序更加直观,编写更加方便,在查找错误以及修改程序时,更加方便): 这里解释一下这个头文件的内容:用C语言编译器来实现java中数据类型boolean,这种类...

       本人小白一枚,一直以来都是穿行与各大博客网站,有想过尝试着去写一写记录一下自己学到的一些东西,但是吧以前也只都是想想没有实际去行动,这不今天下定决心在博客上记录自己的小白成长之路。从0到1的路很难,唯有一颗坚定的心。       今天呢就记录一下前段时间学的数据结构与算法之二维数组与稀疏数组的转换。以下就拿图来演示...

冒泡排序法 冒泡排序法是最经典,最基础的排序算法之一。该算法在工程实践中应用较多,但是找工作面试,ACM竞赛,CCF认证考试等情况下基本用不上,因为这个算法没有什么技术含量并且超级费时。冒泡排序法是每个编程学习者很容易掌握且必须掌握的算法之一。 稳定性: 稳定 所谓稳定的排序算法,指当原始数据中存在多个相同的值时,在排序后这些值的相对位置不变。 这个稳定性有什么用呢?比如一个公司要统计所有部门的营...

一:八大排序算法比较   二:八大排序算法代码实现,以及优化与拓展 冒泡排序:优化为增加哨兵。 选择排序: 希尔排序: 插入排序: 归并排序:拓展为应用在求逆序对 快速排序:拓展为求数组中第n大的值。 堆排序:    拓展为求数组中前n个大的值。 归并排序,快速排序,堆排序,的优化方法之一都可以在数组元素个数小于15的时候用插入排序。(代码未添加) 快速排序:可优化为...

两栈共享空间结构 本质就是两个ArrayStack尾部相接 top1为左栈栈顶 开始于-1 = leftTop top2为右栈栈顶 开始于data.lenght = rightTop 构造方法 getSize()方法的实现 指定端元素个数 getSize(Direction dir) 元素总数 判断是否为空 isEmpty() 判断是否容量满 压栈过程 容量更新过程 resize() 弹栈过程 p...

桶排序介绍 桶排序(Bucket Sort)的原理很简单,它是将数组分到有限数量的桶子里。 假设待排序的数组a中共有N个整数,并且已知数组a中数据的范围[0, MAX)。在桶排序时,创建容量为MAX的桶数组r,并将桶数组元素都初始化为0;将容量为MAX的桶数组中的每一个单元都看作一个"桶"。 在排序时,逐个遍历数组a,将数组a的值,作为"桶数组r"的下标。当...

归并排序介绍 将两个的有序数列合并成一个有序数列,我们称之为"归并"。 归并排序(Merge Sort)就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。 1. 从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这...

堆排序介绍 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。   我们知道,堆分为"最大堆"和"最小堆"。最大堆通常被用来进行"升序"排序,而最小堆通常被用来进行"降序"排序。 鉴于最大堆和最小堆是对称关系,理解其中一种即可。本文将对最大堆实现的升序排序进行详细说明。   最...

直接插入排序介绍 直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。   直接插入排序图文说明   下面选取直接插入排序的一个中间...