牛客刷题总结

  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);

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值