![](https://img-blog.csdnimg.cn/20210820093354588.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
学习算法笔记
grilla1024
这个作者很懒,什么都没留下…
展开
-
排序---基数排序
基数排序基本思想:基数排序(radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按各位位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。学习基数排序之前最好先学习一下计数排序,基数排序在计数排序的基础上稍微改变了些基数排序的实现过程:首先是在待排序中找到最大的值,然后计算出最大值的位数,最大值的位数就是我们要排序的次数。先按个位数排序,按个位排序的过程和计数排序是一样的。然后再按十位,百位等来原创 2021-08-27 17:37:14 · 230 阅读 · 0 评论 -
数据结构与算法基本概念
什么是数据结构(Data Structure)?数据结构是计算机存储、组织数据的方式。它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系(存储数据的不同方式,比如:数组中放在一个小格子一个小格子的数据,链表中不仅放数组还存放指向下一个数据的指针)什么是算法(Algorithm)?1.同一问题的不同解决方法2.算法往往是针对特定数据结构的向链表中插入一条数据:改变两个指向下一个数据的指针即可实现向数组中插入一个数据:先把要插入位置之前的内容复制到新的存储空间,再复制要插入的数据,原创 2021-08-19 09:52:11 · 123 阅读 · 0 评论 -
常用排序算法表
排序:就是将不同大小的数据,让它们变得有序常见的排序(重要)原创 2021-08-19 10:20:06 · 964 阅读 · 0 评论 -
排序---选择排序
选择排序基本思想:第一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,以此类推,直到全部待排序的数据元素的个数为零。首先,就是找到第一个最小值,把他放到第一个。最小值的索引变量定义为minIndex,假设第一个值是最小值,在剩下的值中找比第一个值小的,如果哪个索引的值比第一个小,就把该索引赋值给minIndex,直到循环完所有,没有比索引minInndex的值再小。则minIndex索引对应的值就为最小值。交换第一个值,和minIndex上的值。public class Sele原创 2021-08-19 17:32:09 · 165 阅读 · 0 评论 -
排序---冒泡排序
冒泡排序算法的原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。代码实现:package bubble;public class BubbleSort { public static void BubbkeSort(int[] arr) { for (in原创 2021-08-20 09:29:24 · 96 阅读 · 0 评论 -
排序---插入排序
插入排序基本思想:插入排序的工作方式像排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。拿在左手上的牌总是排序好的,然后把它放到合适的位置。首先。我们从数组的第二个元素开始,让他和第一个元素比较。只需要比较一次就可以。如果第二个元素小于第一个元素那么就交换位置。换成伪代码for(int j=1;j>0;j–)。我们通过j变量来控制要插入比较的元素。第一个要插原创 2021-08-20 11:17:29 · 87 阅读 · 0 评论 -
排序---希尔排序
希尔排序基本思想简介: 希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。希尔排序是不稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。思路: 按照增量值的间隔进行分组,对分组中的数据使用插入排序。随着增量值的减小,每组包含的数据越来越多。当增量值为1时,整个数组就成为了一组。再使用插入排序;eg:如图,增量值为4,首先是红色分组,索引值加一,然后蓝色分组。直到所有的都分组,在分组的过程中,插入排序一直在进行着。原创 2021-08-20 16:33:10 · 229 阅读 · 0 评论 -
排序---归并排序
归并排序基本思想简介: 归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法采用分治法(Divide and Conquer)的思想。分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"归并"在一起,即分而治之。描述: 首先,是打乱的一个数组,将他们不断的二分,直到最小单元,然后从最小单元再不断的两两比较,合并成一个新的数组,这原创 2021-08-21 09:46:09 · 100 阅读 · 0 评论 -
排序---快速排序
快速排序基本思想: 快速排序算法通过多次比较和交换来实现排序,其排序流程如下:首先设定一个分界值,通过该分界值将数组分成左右两部分。将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也原创 2021-08-21 17:45:08 · 103 阅读 · 0 评论 -
排序---计数排序(稳定)
计数排序基本思想:计数排序是一个非基于比较的排序算法。它的优势在于在对一定范围内的整数排序时,快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法。输入的线性表的元素属于有限偏序集S;(意思是说,输入的数据必须是一定范围内的数据,比如高考成绩,必须要是0-750)计数排序的基本思想是先统计数组中每个整数在数组中出现的次数,然后按照从小到大的循序将每个整数按照它出现的次数填到数组中。比如输入的数组是[2,3,4,2,3,2,1],通过循环可以直到1出现了1次,2出现了3次,3出现了2次,原创 2021-08-25 10:52:18 · 367 阅读 · 0 评论