数据结构与算法
文章平均质量分 76
DT31
一枚梦想月入百万的小穷鬼
展开
-
希尔排序算法
在示例代码中,我们首先将增量设置为序列长度的一半,然后在每次循环中将增量减半,直到增量为1。最后,我们返回排序后的结果。它通过将待排序的元素按照一定的间隔进行分组,对每组使用插入排序,然后逐渐缩小间隔,直至间隔为1,最后进行一次插入排序,完成排序。希尔排序(Shell Sort)是插入排序的一种改进版本,它通过将整个待排序的序列分割成若干个子序列来进行插入排序,从而达到减少比较和移动次数的目的。在方法中,我们使用希尔增量来进行排序,增量的初始值为数组长度的一半,然后每次循环将增量除以2,直到增量为1。原创 2024-09-03 00:45:00 · 748 阅读 · 0 评论 -
选择排序
它的基本思想是每次从待排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾,直到所有元素排序完成。选择排序的时间复杂度为O(n^2),其中n是待排序序列的长度。尽管选择排序的时间复杂度较高,但由于其排序过程简单,是一种适用于小规模数据的排序算法。选择排序是一种简单直观的排序算法。它的基本思想是每次从待排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾,直到全部数据排序完成。选择排序的时间复杂度为O(n^2),是一种较慢的排序算法。选择排序的时间复杂度是O(n^2),其中n是数组的长度。原创 2024-08-30 00:15:00 · 361 阅读 · 0 评论 -
插入排序
第五次插入排序:已排序部分:[1, 3, 5, 7, 9],未排序部分:[4] 从未排序部分选择元素4,插入到已排序部分的合适位置,得到已排序部分:[1, 3, 4, 5, 7, 9],未排序部分:[]第四次插入排序:已排序部分:[3, 5, 7, 9],未排序部分:[1, 4] 从未排序部分选择元素1,插入到已排序部分的合适位置,得到已排序部分:[1, 3, 5, 7, 9],未排序部分:[4]由于 6 大于 5,所以它应该位于已排序序列的最后一个位置,得到序列 [2, 4, 5, 6, 1, 3]。原创 2024-09-01 00:30:00 · 1602 阅读 · 0 评论 -
冒泡排序
在每次外层循环中,内层循环会将当前未排序部分的最大元素移动到该部分的末尾。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。外层循环控制需要比较的轮数,内层循环逐个比较相邻的元素并进行交换。外层循环控制需要比较的轮数,内层循环逐个比较相邻的元素并进行交换。冒泡排序是一种简单的排序算法,其基本思想是通过相邻元素的比较和交换来将较大的元素逐步向后移动,从而实现排序。冒泡排序的基本思想是通过相邻元素之间的比较和交换来将较大的元素逐步交换到数组的末尾。,并计算了数组的大小。原创 2024-08-29 01:00:00 · 702 阅读 · 0 评论 -
快速排序
函数中,选择最后一个元素作为基准元素,通过比较将小于基准元素的元素移动到基准元素的左边,大于基准元素的元素移动到基准元素的右边。该方法选择最后一个元素作为基准,然后将小于基准的元素移到基准的左边,大于基准的元素移到基准的右边。快速排序是一种常用的排序算法,它通过选择一个基准元素,将数组分为两个部分,一个部分是小于基准元素的,一个部分是大于基准元素的,并且递归地对两个部分进行排序。元素作为基准,并将数组分成两部分。前后指针(交换小的在前):如图,重点讲,是前面两种做法的进化版,目前也是用的比较多的。原创 2024-08-28 11:16:32 · 899 阅读 · 0 评论 -
几个常用的算法
是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。一句话概括一下,算法就是解决问题的操作步骤。世界是算法来控制的;但是有个前提:算力和存储都是有限的;是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。把问题转化为规模缩小了的同类问题的子问题。原创 2024-07-16 17:00:39 · 772 阅读 · 0 评论 -
几种常用排序算法
排序是处理数据的一种最常见的操作,所谓排序就是将数据按某字段规律排列,所谓的字段就是数据节点的其中一个属性。比如一个班级的学生,其字段就有学号、姓名、班级、分数等等,我们既可以针对学号排序,也可以针对分数排序。稳定性 在一组无序数据中,若两个待排序字段一致的数据,在排序前后相对位置不变,则称排序算法是稳定的,否则是不稳定的。(应该是原先有序的在排序中会不会出现改变)原创 2024-07-16 20:27:00 · 519 阅读 · 0 评论 -
算法的概述
算法是解决问题步骤的有限集合,通常用某一种计算机语言进行伪码描述。中一个方法中的步骤集合就是一个算法。原创 2024-07-20 14:18:29 · 1053 阅读 · 0 评论