快速排序、strncpy、strncat、strncmp实现、回调函数以及指针+二维数组——C语言——day15

本文详细讲解了指针在快速排序、strncpy、strncat、strncmp等字符串操作以及回调函数中的应用,同时涉及二维数组和万能指针的概念,通过实例演示了它们在实际编程中的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天主要的内容是利用指针实现快速排序、strncpy、strncat、strncmp实现、回调函数以及指针+二维数组

首先讲一下快速排序

快速排序的思想是:

在这里插入图片描述
step1:选择一个基准值 // a[0]
step2:从右边开始找,找比基准值小的值
step3:从左边开始找,找比基准值大的值
step4:交换找到的值
step5:重复step2——step4步骤,直到begin与end相遇
step6:此时将相遇位置上的值与基准值交换
step7:针对小于、大于基准值的部分,分别继续进行快速排序递归调用

eg:示例代码
#include<stdio.h>

void sort_print(int *begin,int *end)	//输出
{
   
	for(;begin <= end;++begin)
	{
   
		printf("%d  ",*begin);
	}
	putchar('\n');
}

void swap(int *num1,int *num2)	//交换值
{
   
		int temp = *num1;
		*num1 = *num2;
		*num2 = temp;
}

void quick_sort(int *begin,int *end)	//快速排序
{
   
	int *p = begin;
	int *q = end;
	int *k = begin;

	if(begin > end)
	{
   
		return;
	}

	while(begin < end)
	{
   
		while(begin < end && *k > *end)
		{
   
			--end;
		}
		while(begin < end && *k < *begin)
		{
   
			++begin;
		}
		swap(begin,end);
	}
	swap(begin,k);

	quick_sort(p,end-1);
	quick_sort(begin+1,q);
}

int main(void)	//主函数
{
   
	int array[] = {
   5,6,8,1,4,3,2,9,0,7};
	int len = sizeof(array) / sizeof(array[0]);

	quick_sort(array,array+len-1);
	sort_print(array,array+len-1);

	return 0;
}

输出结果如下图所示:
在这里插入图片描述

接下来讲一下strncpy、strncat、strncmp实现过程

首先是strncpy

char *strncpy(char *dest, const char *src, size_t n)
{
     
   正常拷贝,但是形参上多了一个n 
   当n < strlen(src)  
     只拷贝前n个字符,最终dest中不会有'\0'
   当n == strlen(src)
     正常拷贝 
   当n > strlen(src)
   if (n
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值