十大排序
柳岸残雨
小白
展开
-
十大排序算法2 简单选择排序
#include <iostream>#include <algorithm>#include <vector>using namespace std;void quickSort(vector<int>& array) { for (int i = 0; i < array.size(); i++) { int min = i; for (int j = i; j < array.size(); j++) { i原创 2021-09-01 10:47:42 · 79 阅读 · 0 评论 -
十大排序算法1 冒泡排序法
#include <iostream>#include <algorithm>#include <vector>using namespace std;void BubbleSort(vector<int> &array) { bool flag = true; for (int i = 0; flag && (i < array.size()); i++) { flag = false; for (int原创 2021-09-01 10:35:59 · 65 阅读 · 0 评论 -
十大排序6 归并排序
将一个大的无序数组有序,我们可以把大的数组分成两个,然后对这两个数组分别进行排序,之后在把这两个数组合并成一个有序的数组。由于两个小的数组都是有序的,所以在合并的时候是很快的。 通过递归的方式将大的数组一直分割,直到数组的大小为 1,此时只有一个元素,那么该数组就是有序的了,之后再把两个数组大小为1的合并成一个大小为2的,再把两个大小为2的合并成4的 … 直到全部小的数组合并起来。 算法思想:1、把长度为n的输入序列分成两个长度为n/2的子序列;2、对这两个子序列分别采用归并排序...原创 2021-09-01 09:23:38 · 70 阅读 · 0 评论 -
十大排序算法5 堆排序
过程:1、数组可以看成层序遍历的一颗二叉树,先将二叉树转化为大顶堆形式的二叉树(也就是数组重新排个序)2、对大顶堆的二叉树进行操作,将顶堆和尾部相交换,顶堆最大的数据就拿出来放在数组最后了。再将剩下的n - 1重新排成大顶堆形式,重复递归操作。代码:#include <iostream>#include <vector>using namespace std;class solution {public: void heapSort(vector<int&原创 2021-08-31 15:44:42 · 59 阅读 · 0 评论 -
十大排序4 希尔排序
希尔排序可以说是插入排序的一种优化,采取跳跃分割的方式,将相距某个**“增量”**的记录组成一个子序列,进行插入排序,这样得到的结果是基本有序的。再逐渐的缩小增量,直至增量为1;注意点:1、用个do - while循环, while (increment > 1); 为了最后一次循环increment = 1;2、初始增量 设为 n / 3 + 1;(也可以别的),放在while循环里3、类似与插入排序,这边得从自身i开始,所以得 a[j + increament ] = a...原创 2021-08-31 10:59:36 · 109 阅读 · 0 评论 -
十大排序3 直接插入排序 冲鸭冲
直接插入排序的思想:在一个已经有序的小序列的基础上,一次插入一个元素。从末尾开始找,找到它应该插入的位置。要点:1、从数组第二个元素开始(默认第一个为排好序了)2、从末尾开始找,比它大的元素就向后移动一个3、找到它的位置,插入。C++代码:#include <iostream>#include <vector>using namespace std;void insertSort(vector<int> &array) { for (in原创 2021-08-31 09:37:57 · 73 阅读 · 0 评论