栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

牛客基础打卡 6.10 + C语言实现排序算法:快排

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

牛客基础打卡 6.10 + C语言实现排序算法:快排

1.  对于引用(变量的别名):

(1)引用的声明方法:类型标识符 &引用名=目标变量名;(类型标识符指目标变量的类型)

(2)声明引用时,必须同时对其进行初始化!!

(3)引用本身不占存储单元,系统也不给引用分配存储单元。对引用求地址,就是对目标变量求地址。

(4)引用的作用主要用于在函数参数传递中,解决大块数据或对象的传递效率和开辟空间过大的问题。用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。

(5)引用与指针的区别是,指针通过某个指针变量指向一个对象后,是对它所指向的变量间接操作;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

2. 以下程序的输出结果是:you&me

int main ()
{
    char arr[2][4];
    strcpy (arr[0],"you");
    strcpy (arr[1],"me");
    arr[0][3]='&';
    printf("%s n",arr);
    return 0;
}

字符串的结尾始终留有''字符作为串的结束符!!!printf()打印字符串也是遇到''就结束打印!

解析:由于arr数组是一个2行4列的二维数组,因此执行strcpy()后数组第一行的存储结果是:arr[0][0]='y',arr[0][1]='o',arr[0][2]='u',arr[0][3]=''(arr[0]指*(arr+0),即对数组第一行进行赋值);第二行存储的结果是:arr[1][0]='m',arr[1][1]='e',arr[1][2]='0'。但再执行arr[0][3]='&',就等于就将第一行串的结束符''换成了'&',此时就等于将第一行的串与第二行的串连接在一起了,进行输出操作就会打印出’you&me'了。 

 3. 当使用free()释放掉一个指针内容后,该指针若未被置空,则会变成野指针!

野指针是指向未分配/未初始化或者已free()或delete()释放但未置空的内存地址。

free之后的指针仍然指向原来的堆地址。操作系统认为被free()过的这块内存可以使用,它会毫不考虑的将他分配给其他程序,后果不堪设想。因此最好free了以后再置空,即令指针 = NULL,表示本程序已经放弃再使用该指针。

4. sizeof()是C语言中的一个操作符(运算符),不是函数调用!在编译时即计算好了,其返回值为无符号整型unsigned int,参数可以是数组、指针、类型、对象、函数等。

5.  排序算法--快排

 

//递归实现快排
int i, j;
void QuickSort(int* a, int left, int right)
{
	if (left > right) return; //如果传进来的left>right代表循环结束/递归结束:已是排好序的数组
	int tmp = a[left];//通常以数组首元素作为基准
	int t;//辅助交换变量
	i = left, j = right;
	while (i != j) //当i==j时代表此时一轮排序已结束,要交换基准元素与a[i]或a[j]进行下一轮排序(递归)了
	{
		//先判断j,从右往左找比基准值小的
		while (a[j] >= tmp && i < j)
		{
			j--;
		}
		while (a[i] <= tmp && i < j) //从左往右找比基准值大的
		{
			i++;
		}
		//前两个while都退出且i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号