随笔分类 - 算法
摘要:看了左神的堆排序,觉得思路很清晰,比常见的递归的堆排序要更容易理解,所以自己整理了一下笔记,带大家一步步实现堆排序算法 首先介绍什么是大根堆:每一个子树的最大值都是子树的头结点,即根结点是所有结点的最大值 堆排序是基于数组和二叉树思想实现的(二叉树是脑补结构,实际是数组) 堆排序过程 1、数组建成大
阅读全文
摘要:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int swap(int source[],int a,int b){ int temp; temp = source[a];
阅读全文
摘要:#define _CRT_SECURE_NO_WARNINGS #include #include int reverse(char *begin, char *end) { char temp; if (begin == NULL || end == NULL) { return 0; } while (begin < ...
阅读全文
摘要:memcpy()和 memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型如下 void *memcpy(void *dst, const void *src, size_t count); 描述: memcpy()函数从src内存中拷贝n个字节到d
阅读全文
摘要:归并排序用到了很重要的递归思想,下面给大家贴上本人归并排序的过程和递归步骤,帮助大家更好的理解归并排序 下面是解析过程,能看懂执行过程是g1->g2->g3->g4->g3->g2->g5->g2.....问题就不大了 g5:3 4 mid = 3 merge_progress(, ,3,3) me
阅读全文
摘要:面试中经常会考到算法,下面分别讲如何删除一个字符串里的特定字符或特定字符串 一、 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如, 输入”i want to be a excellent programmers”和”aem”,则删除之后的第一个字符串变成”i wnt to
阅读全文
摘要:约瑟夫环问题是面试的时候很经典的一个算法 约瑟夫问题起源 : 在罗马人占领乔塔帕特后,39 个犹太人与Josephu及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,
阅读全文
摘要:掌握数据结构和算法,尤其是链表,面试编程题经常考 下面是用尾插法创建链表 输出结果 头插法函数如下 输出结果如图
阅读全文
摘要:插入排序的原理是每插入一个数都要将它和之前的已经完成排序的序列进行重新排序,也就是要找到新插入的数对应原序列中的位置。那么也就是说,每次插入一个数都要对原来排序好的那部分序列进行重新的排序,时间复杂度同样为O(n²)。 这种算法是稳定的排序方法。 函数不理解可以看下我写的解析
阅读全文
摘要:本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。 其
阅读全文
摘要:2、选择排序(Selection Sort) 选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
阅读全文
摘要:标准冒泡排序 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include<malloc.h>#include <string.h> 优化一假设我们现在排序ar[]={1,2,3,4,5,6,7,8,10,9}这组数据,按照上面的排序方式,第一趟
阅读全文

浙公网安备 33010602011771号