
算法
StrongPanda
记录我的学习历程,与大家分享,欢迎大V指点
展开
-
简单算法——一维数组的循环左移
给定一个有n个元素的数组,使其整体左移m位(m#include <stdio.h>#include <malloc.h>#include <stdlib.h>int main(){ int m=0,n=0,i=0,e=0; printf("请输入序列长度:"); scanf("%d",&n); //定义数组并赋值 int *arr=(int*)malloc原创 2017-09-16 16:28:08 · 4616 阅读 · 1 评论 -
算法——快速排序
基本思想:通过一趟快速排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。每一趟排序中,都确定一个基准数,把比它小的都放左边,比它大的放右边,这个过程的算法可以结合其他算法,本文中举出了以下两个例子。快速排序的时间复杂度一般为:O(nlogn),最坏的情况是O(原创 2017-09-17 11:21:15 · 342 阅读 · 0 评论 -
算法——大数加法
将两个无法使用基本数据类型存储的大数进行加法运算。基本思路:使用字符串类型进行输入输出,处理时将其每一位转换成int类型,进行加减和进位。C语言实现:这个是自己编完,根据网上的其他代码进行了一些修改删减得出的代码。个人认为相比网上的一些代码,更具有可读性和实用性,还是比较值得记录的。#include <stdio.h>#include <string.h>#define MAXSIZE 10原创 2017-09-17 17:46:27 · 917 阅读 · 0 评论 -
算法——使用递归解决组合问题
从n个数中取m个数,打印所有可能的结果。思想:把一个大问题分解成很多小问题。先从n个数中取一个,再从取出的这个数序列后面的数中取一个,再从新取出的这个数的序列后面的数中取一个,以此类推,直到只用取一个数,那么只要从剩下的序列中依次取结果就可以了。简单的讲,就是我们高中数学写全组合的次序方法,例如取3个数,就先确定前两个数不变,最后一个依次取序列中的数,取完后再变第2个数,最后都取完后改变第1个数。距原创 2017-09-16 21:14:12 · 2179 阅读 · 0 评论 -
数据结构——非循环带头结点单链表的递归方法逆置
与循环单链表相比,非循环带头结点单链表的逆置有一个难以处理的点是头结点的处理。#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct Node{ int data; Node *next;}Node,*PNode;//节点 typedef struct List{ PNode hea原创 2017-09-22 15:14:01 · 1980 阅读 · 0 评论 -
简单算法——使用栈实现括号匹配检验
设计一个算法判定一个算术表达式中的括号是否正确配对(包括三种括号并且需要考虑大中小三种括号的嵌套顺序), 并将对应的程序调试运行通过。 算法思想:暂不考虑数据元素的运算,只考虑括号的配对。则有两个概念:对右括号期待的急迫程度和当前括号的优先级。因此前者的特点符合栈的特点,即后遍历到的括号,急迫程度越强。因此使用一个栈来存储遍历到的括号,遇到左括号则入栈,遇到右括号,如果匹配当前左括号则出栈,如果不匹原创 2017-10-13 10:20:47 · 10191 阅读 · 3 评论