牛客刷题总结

Posted fengshuaicool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客刷题总结相关的知识,希望对你有一定的参考价值。

  1. df -lh:查看硬盘信息
  2. cat /proc/swaps:查看SWAP分区信息
  3. cat /proc/cpuinfo:查看一台linux机器的CPU信息
  4. du:查看该目录占用文件系统数据块的情况
  5. cat命令 :cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的。一次显示整个文件命令如下: cat filename

‘>’ : linux中的数据流重导向:输出导向,覆盖导向的文件内容。
‘<’ : linux中的数据流重导向:输入导向,理解为原本由键盘输入改为文本输入

  1. dd命令 : 作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。参数:if 输入文件(或设备名称) of 输出文件(或设备名称)
    将文件file1拷贝到文件file2中命令如下: dd if=file1 of=file2
  2. C/C++的编译包括几个部分:编译、汇编、链接。
  3. 32位机和64位机上指针的大小,分别为4和8
  4. 一个类中存在虚函数,该类就是抽象类。
  5. 在 dhcpd.conf 中用于向某个客户主机分配固定 IP 地址的参数是 fixed-address

server-name:通知DHCP客户服务器名称;
fixed-address:分配给客户端一个固定的地址;
filename:开始启动文件的名称,应用于无盘工作站;
hardware:指定网卡接口类型和MAC地址。

  1. jobs: 查看后台进程作业
    ps:列出系统中当前运行的那些进程
    ls:显示当前目录中的文件名字
    pg:提供了一次性的查看进程结果,但所提供的查看结果不是动态连续的
  2. Binwalk:是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具 file:命令用来探测给定文件的类型
    firmware-mod-kit:工具的功能和binwalk工具的类似 Netstat
    :命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade
    连接,多播成员 (Multicast Memberships) 等等。
  3. 红黑树(Red Black Tree) 是一种自平衡二叉查找树
  4. B树 是一种平衡的多叉树
  5. B+ 树 是一种树数据结构,是一个n叉树
  6. 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);




以上是关于牛客刷题总结的主要内容,如果未能解决你的问题,请参考以下文章

牛客刷题总结

牛客刷题总结

牛客刷题-SQL进阶挑战大总结(细节狂魔)

牛客刷题-大整数相乘

牛客刷题打卡

牛客刷题打卡