马锦涛

什么是顺序表

顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素、使得线性表中再逻辑结构上响铃的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。

马锦涛

2021-03-01

0.0000 0 0
  • 关注作者
  • 收藏

线性表的特征

1. 第一个数据元素没有前驱,这个数据元素被称为头结点;2. 最后一个数据元素没有后继,这个数据元素被称为尾结点;3. 除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

线性表

线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

希尔排序稳定性

希尔排序是按照不同步长对元素进行插入排序 ,虽然一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以希尔排序是不稳定的。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

插入排序稳定性

比较是从有序序列的末尾开始,也就是想要插入的元素和已经有序的最大者开始比起,如果比它大则直接插入在其后面,否则一直往前找直到找到它该插入的位置。如果碰见一个和插入元素相等的,那么把要插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

选择排序稳定性

选择排序是给每个位置选择当前元素最小的,例如有数据{5(1),8 ,5(2), 2, 9 },第一遍选择到的最小元素为2,所以5(1)会和2进行交换位置,此时5(1)到了5(2)后面,破坏了稳定性,所以选择排序是一种不稳定的排序算法。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

冒泡排序的稳定性

只有当arr[i]>arr[i+1]的时候,才会交换元素的位置,而相等的时候并不交换位置,所以冒泡排序是一种稳定排序算法。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

稳定性的意义:

如果一组数据只需要一次排序,则稳定性一般是没有意义的,如果一组数据需要多次排序,稳定性是有意义的。例如要排序的内容是一组商品对象,第一次排序按照价格由低到高排序,第二次排序按照销量由高到低排序,如果第二次排序使用稳定性算法,就可以使得相同销量的对象依旧保持着价格高低的顺序展现,只有销量不同的对象才需要重新排序。这样既可以保持第一次排序的原有意义,而且可以减少系统开销。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

稳定性的定义:

数组arr中有若干元素,其中A元素和B元素相等,并且A元素在B元素前面,如果使用某种排序算法排序后,能够保证A元素依然在B元素的前面,可以说这个该算法是稳定的。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

切分原理:

把一个数组切分成两个子数组的基本思想:1.找一个基准值,用两个指针分别指向数组的头部和尾部;2.先从尾部向头部开始搜索一个比基准值小的元素,搜索到即停止,并记录指针的位置;3.再从头部向尾部开始搜索一个比基准值大的元素,搜索到即停止,并记录指针的位置;4.交换当前左边指针位置和右边指针位置的元素;5.重复2,3,4步骤,直到左边指针的值大于右边指针的值停止

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

快速排序原理

排序原理:1.首先设定一个分界值,通过该分界值将数组分成左右两部分;2.将大于或等于分界值的数据放到到数组右边,小于分界值的数据放到数组的左边。此时左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值;FileInputStream("reverse_merge_shell.txt"))); String line=null; while((line=reader.readLi

马锦涛

2021-02-28

52.1739 1 0
  • 关注作者
  • 收藏

快速排序

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

归并排序的缺点:

需要申请额外的数组空间,导致空间复杂度提升,是典型的以空间换时间的操作。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

归并排序原理

排序原理: 1.尽可能的一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。 2.将相邻的两个子组进行合并成一个有序的大组; 3.不断的重复步骤2,直到最终只有一个组为止。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

归并排序

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

什么是递归

定义方法时,在方法内部调用方法本身,称之为递归.作用:它通常把一个大型复杂的问题,层层转换为一个与原问题相似的,规模较小的问题来求解。递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

希尔排序原理

排序原理: 1.选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组; 2.对分好组的每一组数据完成插入排序; 3.减小增长量,最小减为1,重复第二步操作。

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

希尔排序

如果已排序的分组元素为{2,5,7,9,10},未排序的分组元素为{1,8},那么下一个待插入元素为1,我们需要拿着1从后往前,依次和10,9,7,5,2进行交换位置,才能完成真正的插入,每次交换只能和相邻的元素交换位置。那如果我们要提高效率,直观的想法就是一次交换,能把1放到更前面的位置,比如一次交换就能把1插到2和5之间,这样一次交换1就向前走了5个位置,可以减少交换的次数,这样的需求如何实现

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

插入排序的原理

排序原理:1.把所有的元素分为两组,已经排序的和未排序的;2.找到未排序的组中的第一个元素,向已经排序的组中进行插入;3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位;

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏

插入排序

插入排序(Insertion sort)是一种简单直观且稳定的排序算法。插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较,如下图所示:

马锦涛

2021-02-28

0.0000 0 0
  • 关注作者
  • 收藏
12317>