选择排序

简单选择排序

时间复杂度$O(n^2)$
简单选择排序是一种稳定的排序方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool SelectSort(SqList &L,int n){
int i,j,min;
for(i=1;i<=n;i++){
min=i;
for(j=i+1;j<=n;j++){
if(L.data[j]<L.data[min]){
min=j;
}
}
if(min!=i){//如果最小值不是最开始的值 两个数换位置
L.data[0]=L.data[i];
L.data[i]=L.data[min];
L.data[min]=L.data[0];
}
}
return 1;
}
阅读全文 »

交换排序

冒泡排序

最坏情况下 即元素全部逆序 时间复杂度$O(n^2)$
平均时间复杂度也为$O(n^2)$
冒泡排序是一种稳定的排序方法

1
2
3
4
5
6
7
8
9
10
bool BubbleSort(SqList &L,int n){//n为表长
for(int i=1;i<n;i++){
int s=0;
for(int j=n;j>i;j--){
if(L.data[j-1]>L.data[j]) swap(L.data[j-1],L.data[j]);//若后面的小于前面的 交换位置 然后再跟前面的比较
s=1;
}
if(s==0) return 1;
}
}
阅读全文 »

插入排序

直接插入排序

直接插入排序是一个稳定的排序 算法时间复杂度$O(n^2)$
适用于顺序存储和链式存储

前提环境条件

在顺序表中对表内元素进行直接插入排序
对线性表·1描述的顺序表做了几处修改
顺序表创建从L.data[1]开始存储元素 L.data[0]不存储元素
顺序表遍历从L.data[1]L.data[n] n为L.length表长

阅读全文 »

数据结构复习·4 线性表:循环单链表/循环双链表

循环单链表

单链表的最后一个结点的指针指向NULL r->next=NULL
循环单链表的最后一个结点的指针指向头结点 r->next=L
从而整个链表形成一个环
单链表为空条件为头结点的指针指向NULL L->next=NULL
循环单链表为空的条件为头结点的指否等于头指针 L->next=L

阅读全文 »

数据结构复习·3 线性表:双链表

宏定义

建议重新复习一下C++对结构体的定义以及typedef声明新的类型名

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream> 
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
using namespace std;
typedef char ElemType;
typedef struct DNode{
ElemType data;
struct DNode *prior,*next;//prior next指针指向struct DNode结构体变量
//prior为前驱指针 next为后继指针
}DNode,*DLinkList; //结构体类型为DNode 别名DLinkList
阅读全文 »

使用pscp上传下载文件

pscp上传文件到指定目录

eg. 将Windows10下D:\Code\datastructure.txt文件上传到Ubuntu下var/www目录下
cmd的pscp命令为

1
2
3
4
cd /D D:\Code\
pscp D:\Code\php.zip root@ip:/var/www/
#ip为服务器的公网ip地址
#然后输入root的密码即可上传成功
阅读全文 »

本文旨在记录本人学习和使用git命令操作的时候遇到的问题和解决方案

修改commit注释

学习git提交文件到github的时候没有注意自己commit的命名,因此事后需要作出修改

修改最新一次的commit注释

添加了commit注释,但是没有push

1
$ git commit --amend
阅读全文 »

数据结构复习·2 线性表:单链表

宏定义

建议重新复习一下C++对结构体的定义以及typedef声明新的类型名

1
2
3
4
5
6
7
8
9
10
11
#include<iostream> 
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
using namespace std;
typedef char ElemType;
typedef struct LNode{ //定义单链表节点类型
ElemType data; //数据域
struct LNode *next; //指针域 next指向LNode结构体变量
}LNode,*LinkList; //结构体类型LNode 别名为*LinkList
阅读全文 »