
数据结构算法
小代码大用处
在程序的世界里遨游
展开
-
迭代法遍历
二叉树原创 2022-07-09 13:20:02 · 291 阅读 · 0 评论 -
编程思考
左右边界: 循环不变量1、严格定义边界的实际意义是什么2、明确变量的含义3、循环不变量4、小数据量调试int l=0, r=n-1; //在[l,r]的范围里操作,所以当l==r时,区间[l..r]依然是有效的int l=0, r=n; //在[l,r)的范围里操作,所以当l==r时,区间[l..r)是无效的 [42,42)数组:数组的索引可以有语义,也可以没...原创 2019-06-19 22:22:07 · 178 阅读 · 0 评论 -
递归的方式反转链表
#include<iostream>using namespace std;struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};//206. Reverse Linked List//递归的方式反转链表class Solution{public: ListNode* rev...翻译 2018-03-28 16:41:59 · 219 阅读 · 0 评论 -
Reverse Linked List
#include<iostream>using namespace std;struct ListNode{ int val; ListNode *next; ListNode(int x) :val(x), next(NULL) {}};//206. Reverse Linked Listclass Solution{public: ListNode* reverseList(Lis...翻译 2018-03-28 16:27:18 · 465 阅读 · 0 评论 -
//203. Remove Linked List Elements
#include<iostream>using namespace std;//Definition for singly-linked list.struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};//LinkedList Test Helper FunctionsLis...翻译 2018-03-29 22:38:42 · 124 阅读 · 0 评论 -
206. Reverse Linked List
#include<iostream>using namespace std;/* Definition for singly-linked list.*/struct ListNode{ int val; ListNode *next; ListNode(int x) :val(x), next(NULL) {}};// LinkedList 测试辅助函数//根据n个元素的数组arr...翻译 2018-03-29 22:16:56 · 92 阅读 · 0 评论 -
时间复杂度分析
#include<iostream>#include<string>#include<cassert>using namespace std;//O(1)void swapTwoInts(int &a, int &b) { int temp = a; a = b; b = temp; return;}//O(n)int sum(int n) { ...翻译 2018-03-13 16:28:34 · 224 阅读 · 0 评论 -
空间复杂度概念
/*空间复杂度:多开了多少辅助空间多开了一个辅助的数组:O(n)多开了一个辅助的二维数组:O(n^2)多开常数空间:O(1)*///递归与非递归的空间复杂度#include<iostream>#include<cassert>using namespace std;int sum1(int n) { assert(n >= 0); int ret = 0; for (...翻译 2018-03-13 14:59:41 · 314 阅读 · 0 评论 -
时间复杂度的概念
/*数据规模的概念:计算机1s大概能处理10^8个数据,所以1s内:O(n^2)的算法可以处理10^4级别的数据O(n)的算法可以处理10^8级别的数据O(nlogn)的算法可以处理10^7级别的数据*/#include<iostream>#include<cmath>#include<ctime>using namespace std;int main() {...翻译 2018-03-13 14:52:23 · 734 阅读 · 0 评论 -
选择排序算法
#include<algorithm>#include<iostream>using namespace std;void selectionSort(int arr[], int n) { for (int i = 0; i < n; i++) { //寻找[i,n)区间里的最小值 int minIndex = i; for (int j = i + 1; j...原创 2018-02-15 12:03:56 · 139 阅读 · 0 评论 -
数组反转
//数组反转/*方案一:利用栈先进后出的性质方案二:前后互换*///方案二static void Reverse(int array[], int begin, int end) {while (end > begin) {swap(array[begin], array[end]);begin++;end--;}}原创 2018-02-06 15:11:56 · 286 阅读 · 0 评论 -
结构
声明结构的形式:1:struct point {int x;int y;};struct point p1, p2;2:struct {int x;int y;}p1,p2;3:struct point {int x;int y;}p1,p2;//对于第一和第三种形式,都声明了结构point,但第二种没有声原创 2017-12-25 22:41:27 · 143 阅读 · 0 评论 -
堆排序
#includeusing namespace std;/*堆排序:堆实际上是一颗完全二叉树要点: 1、确定最后一个非叶子节点:如果二叉树的结点总数为n,则最后一个非叶子节点为n/2 2、确定当前结点的左右孩子:如果当前结点下标是 i,则其左孩子的下标是 2i,右孩子的下标是 2i+1(数组下标从1开始)*/void HeapAdjust原创 2017-12-11 10:28:31 · 178 阅读 · 0 评论 -
选择排序
//Selection-Sort#include#includeusing namespace std;void selectionSort(int arr[], int n){for (int i = 0; i {//寻找[i,n)区间里的最小值int minIndex = i;for (int j = i + 1; j {if (翻译 2017-10-14 22:19:13 · 138 阅读 · 0 评论