- 博客(15)
- 收藏
- 关注
原创 2021-10-24
归并排序主要采用递归思想和双指针法package com.zhou.ObjectStream;public class GuiBinPaiXu { public static void main(String[] args) { int[] a = {4, 2, 43, 23, 1, 6, 8}; int left = 0; int right = a.length - 1; proSort(a, left, right);
2021-10-24 10:01:31 1813
原创 如何判断输入的字符序列是否上回文数
#include <string.h>#include <stdlib.h>#include<iostream>using namespace std;typedef struct StackNode{ char data; struct StackNode* Next;}StackNode,*LinkStack;LinkStack& initStack(LinkStack& S){ S = NULL; r
2021-04-23 14:17:29 128
原创 数据结构:将链表连接翻转,且利用原链表空间
#include<iostream>using namespace std;typedef struct LNode{ int data; struct LNode* next; int num;}LNode,*LinkList;LinkList& createList(LinkList& L, int n) //创建链表{ L = new LNode; L->next = NULL; L->num = 0; LinkList r =
2021-04-13 21:30:32 174
原创 数据结构:找出链表确定值最大的节点
#include<iostream>using namespace std;typedef struct LNode{ int data; struct LNode* next; int num;}LNode,*LinkList;LinkList& createList(LinkList& L, int n) //创建链表{ L = new LNode; L->next = NULL; L->num = 0; LinkList r
2021-04-13 21:29:26 1162
原创 数据结构:两个非递减有序链表合并为一个非递增有序链表
代码注释处的两个排序函数有BUG,先放着,等以后看看错在哪里。第三个排序函数没问题,可正常运行。#include<iostream>using namespace std;typedef struct LNode{ int data; struct LNode* next; int num;}LNode,*LinkList;LinkList& createList(LinkList& L, int n){ L = new LNode; L->ne
2021-04-10 17:47:11 2668 1
原创 数据结构:两个递增链表的合并,且合并后无重复值
初步实现,代码健壮性不高,待完善#include<iostream>using namespace std;typedef struct LNode{ int data; struct LNode* next; int num;}LNode,*LinkList;LinkList& createList(LinkList& L, int n) { L = new LNode; L->next = NULL; L->num = 0;
2021-04-10 15:35:08 902
原创 C语言数组的实现
#include <stdio.h>#include <stdlib.h>struct Arr{ int* p; //存储的是数组第一个元素的地址 int len; //数组所能容纳的最多元素的个数 int n; //当前有效元素个数};void inint_arr(struct Arr* pArr, int length); //数组的初始化void append_arr(struct Arr*pArr,int val); //继续为数组添加值
2021-04-08 20:44:51 520
原创 数据结构预备知识:数组与指针的关系
#include<stdio.h>int main(){ int a[5] = { 5,1,2,3,4 }; //a[3]=*(a+3) printf("%d\n", *a); //a代表的是指向数组第一个元素的地址 printf("%d\n", *a + 1); //相当于数组第一个元素+1 printf("%d\n", *a + 3); //相当于数组第一个元素+3 printf("%d\n", *(a + 3)); //相当于数组第四个元素 return
2021-04-06 22:27:30 103
原创 关于chrom浏览器不能在地址栏直接使用百度搜索问题
使用浏览器的时候突然出现用地址栏直接搜索后会自动跳转到百度搜索主页面,这样很不方便,需要二次搜索。解决办法:在chrome—设置—搜索引擎—管理搜索引擎—添加。为了和默认的区分,可将原来的百度搜索设置的第二栏关键字改为其他任意字符。把滚动条滚动到最底端。然后添加一个搜索引擎。然后分别输入下列东西到三个文本框:Baidubaidu.comhttp://www.baidu.com/s?ie=UTF-8&wd=%s然后点击’完成’。把它设置为默认搜索,你的baidu搜索引擎就能正常工作了。
2021-04-04 09:10:51 1646 1
原创 狄克斯特拉算法
狄克斯特拉算法适用于都是正权边的加权图,求解最短路径。步骤:1、找出“最便宜”的节点,即可在最短时间内到达的节点2、更新该节点的邻居的开销3、重复这个过程,直到对图中的每个节点都这样做了4、计算最终路径要编写解决这个问题的代码,需要三个散列表:随着算法的进行,你将不断更新列表costs和parents。graph = {}graph["start"] = {}graph["start"]["a"] = 6graph["start"]["b"] = 2graph["a"] = {}
2021-03-27 17:12:30 154 3
原创 广度优先搜索
步骤:先用代码建立图模型,然后将图中元素按深度顺序进行判断注意:一定要创建一个记录已经测试过的人物的数组,否则互为朋友的人物会导致无限循环from collections import deque #导入所需库graph={} #建立映射关系,注意“你”被映射到了一个数组,因此graph["you"]是一个数组,其中包含了“你”的所有朋友graph["you"]=["alice","bob","claire"]graph["alice"]=["z
2021-03-27 14:36:45 62
原创 递归函数和调用栈
递归函数:编写递归函数时,必须告诉它合适停止递归。正因为如此,每个递归函数都有两部分:基线条件和递归条件。递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无线循环。例:def countdown(i): print (i) if i <= 0: #基线条件 return else: #递归条件 countdown(i-1)print (countdown(10))调用栈:栈的两种操作:压入和
2021-03-27 12:03:42 320 1
原创 选择排序算法
时间复杂度:O(n^2)def findSmallest(arr): smallest = arr[0] #存储最小的值 smallest_index = 0 #存储最小元素的索引 for i in range(1, len(arr)): if arr[i] < smallest: smallest = arr[i] smallest_index = i return smallest_inde
2021-03-27 10:51:24 61
原创 快速排序算法
步骤:1、选择基准值2、将数组分成两个子数组:小于基准值的元素和大于基准值的元素3、对这两个数组进行快速排序(利用递归函数)def quicksort(array): if len(array) < 2: return array #基线条件:为空或只包含一个元素的数组是“有序”的 else: pivot = array[0] #递归条件 less=[i for i in array[1:] if i <= pivot
2021-03-27 10:25:20 76
原创 leetcode-191知识点
n&(1<<i)的含义1<<i 是将1左移i位,即第i位为1,其余位为0;例如1<<2 则0001->0100n&(1<<i)是将左移i位的1与n进行按位与,即为保留n的第i位,其余位置零如果n第i位为0,则n&(1<<i)的值为0否则不为0常用if(n&(1<<i)==0)用于判断n的第i位是否为0...
2021-03-22 19:53:57 63
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人