牛客刷题总结
Posted fengshuaicool
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客刷题总结相关的知识,希望对你有一定的参考价值。
- df -lh:查看硬盘信息
- cat /proc/swaps:查看SWAP分区信息
- cat /proc/cpuinfo:查看一台linux机器的CPU信息
- du:查看该目录占用文件系统数据块的情况
- cat命令 :cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的。一次显示整个文件命令如下: cat filename
‘>’ : linux中的数据流重导向:输出导向,覆盖导向的文件内容。
‘<’ : linux中的数据流重导向:输入导向,理解为原本由键盘输入改为文本输入
- dd命令 : 作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。参数:if 输入文件(或设备名称) of 输出文件(或设备名称)
将文件file1拷贝到文件file2中命令如下: dd if=file1 of=file2 - C/C++的编译包括几个部分:编译、汇编、链接。
- 32位机和64位机上指针的大小,分别为4和8
- 一个类中存在虚函数,该类就是抽象类。
- 在 dhcpd.conf 中用于向某个客户主机分配固定 IP 地址的参数是 fixed-address
server-name:通知DHCP客户服务器名称;
fixed-address:分配给客户端一个固定的地址;
filename:开始启动文件的名称,应用于无盘工作站;
hardware:指定网卡接口类型和MAC地址。
- jobs: 查看后台进程作业
ps:列出系统中当前运行的那些进程
ls:显示当前目录中的文件名字
pg:提供了一次性的查看进程结果,但所提供的查看结果不是动态连续的 - Binwalk:是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具 file:命令用来探测给定文件的类型
firmware-mod-kit:工具的功能和binwalk工具的类似 Netstat
:命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade
连接,多播成员 (Multicast Memberships) 等等。 - 红黑树(Red Black Tree) 是一种自平衡二叉查找树
- B树 是一种平衡的多叉树
- B+ 树 是一种树数据结构,是一个n叉树
- AVL树是自平衡二叉查找树
A[i][j] = A[p][q] + ((i - p) * n + (j - q)) * b;
A[8][5] = SA + ((8-1)*10 + 5-1)*3 = SA + 222
交换排序
1.冒泡排序 O(n^2)
#define MAXSIZE 10000
typedef struct
int r[MAXSIZE+1];
int length;
SqList;
void swap(SqList *L, int i, int j)
int temp = L->r[i];
L->r[i] = L->r[j];
L->r[j] = temp;
void BubbleSort0(SqList *L)
int i,j;
for(i=1; i<L->length; i++)
for(j=i+1; j<=L->length; j++)
if(L->r[i] > L->r[j])
swap(L,i,j);
/* 冒泡排序 */
void BubbleSort(int arr[], int length)
for (int i = 0; i < length; i++)
for (int j = 0; j < length - i - 1; j++)
if (arr[j] > arr[j + 1])
int temp;
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
2.快速排序 O(nlogn)
void QuickSort(SqList *L)
QSort(L,1,L->length);
void QSort(SqList *L,int low,int high)
int pivot;
if(low < high)
pivot = Partition(L,low,high);
QSort(L,low,pivot-1);
QSort(L,pivot+1,high);
int Partition(SqList *L,int low,int high)
int pivotkey;
pivotkey = L->r[low];
while(low < high)
while(low < high && L->r[high] >= pivotkey)
high--;
swap(L,low,high);
while(low < high && L->r[low] <= pivotkey)
low++;
swap(L,low,high);
return low;
插入排序
1.直接(简单)插入排序
void InsertSort(SqList *L)
int i,j;
for(i=2; i<=L->length; i++)
if(L->r[i] < L->r[i-1])
L->r[0] = L->r[i];
for(j=i-1; L->r[j] > L->r[0]; j--)
L->r[j+1] = L->r[j];
L->r[j+1] = L->r[0];
// 插入排序
void InsertSort(int arr[], int length)
for (int i = 1; i < length; i++)
int j;
if (arr[i] < arr[i - 1])
int temp = arr[i];
for (j = i - 1; j >= 0 && temp < arr[j]; j--)
arr[j + 1] = arr[j];
arr[j + 1] = temp;
2.希尔排序
void shellSort(SqList *L)
int i,j,k=0;
int increment = L->length;
do
increment = increment/3 + 1;
for(i=increment+1; i<=L->length; i++)
if(L->r[i] < L->r[i-increment])
L->r[0] = L->r[i];
for(j=i-increment; j>0 && L->r[0]<L->r[j]; j-=increment)
L->r[j+increment] = L->r[j];
L->r[j+increment] = L->r[0];
while(increment>1);
以上是关于牛客刷题总结的主要内容,如果未能解决你的问题,请参考以下文章