八大排序算法
八大排序算法
是个可爱的小伙砸
这个作者很懒,什么都没留下…
展开
-
直接插入排序—Java实现
插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,直到全部插入完成。动图如下:从下标为1的元素开始,将其与其之前的元素进行大小比较,如果之前的元素比他小,那么就直接插入到该元素的后边,反之,则继续向前比较,直到找到比需插入元素小的元素位置进行插入,或者一直遍历到数组开头都没发现比需要插入的元素小的,那就直接插入到数组的最前端,每一个元素都按照这样的方法,直到所有元素全部插入完成。/** * 直接插入排序: * 1.从第一个元素开始,该元素可以认为已经被排序 *原创 2021-07-08 21:15:26 · 211 阅读 · 2 评论 -
C++实现排序算法之基数排序
一、算法思想基数排序是一种非比较型整数排序算法,其原理是将众多数字按位分隔后进行排序。实现步骤:1.将所有待比较的数字(正整数)统一为同一长度,位数不够的数字前面补0;2.按照从个位,十位,百位······从低到高的顺序进行排序3.完成从低位到高位的排序后,待排序数字也就完成了排序具体举例说明:初始化序列num{57, 123, 564, 32, 0, 56, 169, 5, 23, 11, 100}将上述序列的数字按照个位数字进行排序,个位数字取值范围0-9,我们可以将其设置为数组用来存储原创 2020-07-22 16:48:43 · 6646 阅读 · 4 评论 -
C++实现排序算法之归并排序
一、算法思想该算法是典型的分治策略算法,基本思想是将待排序数组分成若干个小数组,直到为单个数组(即为有序数组)后(分阶段),再将前面得到的单个数组依次拼接在一起,组成有序数组(治阶段)。动态效果示意图如下:按步骤来看:先来实现将一个数组分成两部分:代码如下:#include <iostream>using namespace std;void merge(int arr[], int left, int mid, int right){ int left_size原创 2020-07-19 15:38:12 · 1672 阅读 · 0 评论 -
C++实现排序算法之堆排序
一、算法思想堆排序是利用堆性质进行的一种选择排序概念:堆:堆是一棵顺序存储的完全二叉树每个节点的值都不大于其左右孩子节点的值的堆叫做小根堆(下左图)每个节点的值都不小于其左右孩子节点的值的堆叫做大根堆(下右图)设当前元素在数组中以R[i]表示,那么,(1) 它的左孩子结点是:R[2*i+1];(2) 它的右孩子结点是:R[2*i+2];(3) 它的父结点是:R[(i-1)/2];(4) R[i] <= R[2*i+1] 且 R[i] <= R[2i+2]。堆排序步骤如下:原创 2020-07-17 12:57:50 · 3736 阅读 · 1 评论 -
C++实现排序算法之简单选择排序
一、算法思想在待排序的数据中选择最大(小)的元素放在其最终的位置基本操作:1.首先通过n-1次关键字的比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换2.再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换3.重复上述操作,共进行n-1趟排序后,排序结束动态图如下:举例说明:C++代码如下:#include <iostream>#include <vector>using namespace std;vecto原创 2020-07-16 15:07:27 · 2130 阅读 · 0 评论 -
C++实现排序算法之快速排序
一、算法思想简介快速排序是交换排序,其基本思想是1.任取一个元素(如:第一个)为中心元素2.所有比它小的元素一律前放,反之则后放,形成左右两个子表3.对各子表重新选择中心元素并依此规则调整4.直到每个子表的元素只剩一个动态效果示意图C++代码如下:#include <iostream>#include <vector>using namespace std;int part(vector<int>&list, int left, int原创 2020-07-15 19:54:57 · 1822 阅读 · 3 评论 -
C++实现排序算法之冒泡排序
冒泡排序的思想是:从头访问待排序的数列,每次比较相邻的两个元素,将他们的顺序按照从大到小或者从小到大调整过来,直到完成整个数列所有元素的顺序调整。动态效果示意图如下:C++代码#include <iostream>using namespace std;#include <vector>vector<int>BubbleSort(vector<int> list){ vector<int>result = list; if (原创 2020-07-15 15:02:00 · 1379 阅读 · 0 评论 -
C++实现希尔排序
希尔排序可认为是直接插入排序的升级版,直接插入排序是一位一位的挪动,而希尔排序是将步长设置为一个较大的位置,特点如下:1.一次移动,移动位置较大,跳跃式的接近排序后的最终位置2.最后一次只需要少量移动3.增量移动必须是递减的,最后一个必须是13.增量序列应该是互质的代码如下:#include <iostream>#include <vector>using namespace std;vector<int> ShellSort(vector<in原创 2020-07-14 16:16:28 · 180 阅读 · 0 评论 -
C++实现排序算法之直接插入排序
**插入排序:**每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,直到全部插入完成。动图如下:从下标为1的元素开始,将其与其之前的元素进行大小比较,如果之前的元素比他小,那么就直接插入到该元素的后边,反之,则继续向前比较,直到找到比需插入元素小的元素位置进行插入,或者一直遍历到数组开头都没发现比需要插入的元素小的,那就直接插入到数组的最前端,每一个元素都按照这样的方法,直到所有元素全部插入完成。代码如下:#include <iostream>#include原创 2020-07-14 11:17:32 · 2535 阅读 · 0 评论