算法
灬Sunnnnn
承接各种定制开发,Qt、音视频、流媒体、客户端、服务端,需要的私聊。
展开
-
五大算法设计思想
分治法概念:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。思想策略:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。特征:1) 该问题的规模缩小到一定的程度就可以容易地解决2) ...转载 2020-03-29 22:43:25 · 547 阅读 · 0 评论 -
排序算法-归并排序
1.归并排序1)分解:将已有的子序列采用递归的方式进行折半拆分,直到分组后只有一个元素。2)合并:将划分后的序列进行两两排序合并。2.图解3.算法/*合并Array[low, mid)和Array[mid, high) 合并前应保证Array[low, mid)和Array[mid, high)中的元素都是有序的*/void merge(int* A...原创 2019-11-26 21:58:38 · 141 阅读 · 0 评论 -
排序算法-快速排序
1.快速排序基本思想:挖坑填数+分治法1)从序列中选择一个基准数(这里选择序列中第一个数为基准数)2)将序列中的所有数依次遍历,比基准数大的位于其右侧,比基准数小的位于其左侧3)重复步骤1、2,直到所有子集中只有一个元素为止2.图例3.算法//快速排序,哨兵i和jvoid quickSort(int arr[], int i, int j){...原创 2019-11-25 22:42:00 · 132 阅读 · 0 评论 -
排序算法-冒泡排序
1.冒泡排序1)将序列中的进行左右比较,保证右边的元素始终大于左边的元素(第一轮结束后,序列中最后一个元素一定是当前序列的最大值)2)对序列中的剩下的n-1个元素再执行步骤12.图例3.算法//冒泡排序void bubbleSort(int arr[], int len){ for (int i = 0; i < len - 1; i++) ...原创 2019-11-25 21:27:36 · 172 阅读 · 0 评论 -
排序算法-堆排序
1.堆排序1)首先将序列构建为大顶堆 ;2)取出当前大顶堆的根结点,将其与序列末尾元素进行交换(此时末尾元素为已排序序列的最大值);3)对交换后的n-1个序列元素进行调整,使其满足大顶堆的性质;4)重复2、3步骤,直到堆中只有一个元素位置2.数据结构-堆详见数据结构-堆3.算法//递归方式构建堆,parent为第一个非叶子结点下标,num为数组个数...原创 2019-11-17 13:33:00 · 140 阅读 · 0 评论 -
排序算法-简单选择排序
1.简单选择排序从待排序的序列中,找到关键字最小的元素;如果最小元素不是待排序列的第一个元素,将其和第一个元素互换;然后从余下的N-1个元素中,找出关键字最小的元素,重复以上步骤。1)1层循环:依次遍历序列中的每个元素;2)2层循环:将遍历得到的当前元素依次与余下的元素进行比较,符合最小元素的条件,则交换。2.图例红色字体表示位置发生变化的两个元素。3.算法...原创 2019-11-17 12:26:37 · 182 阅读 · 0 评论 -
排序算法-希尔排序
1.希尔排序将待排序数组按照步长进行分组,然后将每组的元素利用直接插入排序的方法进行排序,每次将步长折半减小,gap=1时,利用直接插入完成排序。1)第一层循环将gap依次折半,对序列进行分组直到gap=1;2)第二、三层循环利用直接插入排序的两次循环2.图例3.算法//希尔排序void shellSort(int *arr, int num)...原创 2019-11-17 11:58:07 · 164 阅读 · 0 评论 -
排序算法-直接插入排序
1.直接插入排序将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已经排序的元素小,则交换,直到全部元素都比较过。1)第一层循环,遍历待比较的所有数组元素;2)第二层循环,将本轮选择的元素与已经排好序的元素相比较;2.图例3.算法//直接插入排序//参数1:数组//参数2:元素个数void insertSort(int *arr,...原创 2019-11-17 10:53:17 · 399 阅读 · 0 评论