指针数组

指针数组与字符串排序
  1. //_41_指针数组  
  2. //_41_main.cpp  
  3.   
  4. //实例:在一个已经排好序的字符串数组中,插入一个键盘输入的字符串,  
  5. //使其继续保持有序  
  6. //区分char *point[10]和char (*point)[10]的区别  
  7.   
  8. #include <stdio.h>  
  9. #include <stdlib.h>  
  10. #include <string.h>  
  11.   
  12. int main()  
  13. {  
  14.     //声明子函数  
  15.     int binary(char *ptr[],char *str,int n);//查找函数声明  
  16.     void insert(char *ptr[],char *str,int n,int i);//插入函数声明  
  17.   
  18.     int i;  
  19.     char *ptr1[6];  
  20.     printf("请为字符型指针数组赋初值:\n");  
  21.     for(i=0;i<5;i++)  
  22.     {  
  23.         ptr1[i] = (char *)malloc(20);//为指针分配地址  
  24.         gets(ptr1[i]);//输入字符串  
  25.     }  
  26.     ptr1[5] = (char *)malloc(20);  
  27.     printf("\n");  
  28.     printf("original string:\n");  
  29.     for(i=0;i<5;i++)//输出指针数组各个字符串  
  30.         printf("%s\n",ptr1[i]);  
  31.   
  32.     printf("\ninput search string:\n");  
  33.     char *temp;  
  34.     temp = new char[20];//(char *)malloc(20)  
  35.     gets(temp);//输入被插字符串  
  36.     i = binary(ptr1,temp,5);//寻找插入位置  
  37.     printf("i = %d\n",i);  
  38.     insert(ptr1,temp,5,i);//在插入位置i初插入字符串  
  39.     printf("output strings:\n");  
  40.     for(i=0;i<6;i++)//输出指针数组全部字符串  
  41.         printf("%s\n",ptr1[i]);  
  42.   
  43.     system("pause");  
  44.     return 0;  
  45. }  
  46.   
  47. int binary(char *ptr[],char *str,int n)  
  48. {  
  49.     //折半查找插入位置  
  50.     int high,low,mid;  
  51.     low = 0;  
  52.     high = n-1;  
  53.     //若插入字符串比字符串数组的第0个小,则插入位置为0  
  54.     if(strcmp(str,ptr[0])<0)  
  55.         return 0;  
  56.     //若插入字符串比字符串数组的最后一个大,则应插入字符串数组的尾部  
  57.     if(strcmp(str,ptr[high])>0)  
  58.         return n;  
  59.     while(low <= high)  
  60.     {  
  61.         mid = (low+high)/2;  
  62.         if(strcmp(str,ptr[mid])<0)  
  63.             high = mid - 1;  
  64.         else if(strcmp(str,ptr[mid])>0)  
  65.             low = mid + 1;  
  66.         else  
  67.             return mid;//插入字符串与字符数组的某个字符串相同  
  68.     }  
  69.     return low;//插入位置在字符数组中间  
  70. }  
  71.   
  72. void insert(char *ptr[],char *str,int n,int i)  
  73. {  
  74.     for(int j=n;j>i;j--)  
  75.     {  
  76.         strcpy(ptr[j],ptr[j-1]);//将插入位置后的字符串后移  
  77.     }  
  78.     strcpy(ptr[i],str);//将被插字符串按字典排序插入字符串数组  
  79. }  
内容概要:本文介绍了一个基于冠豪猪优化算法(CPO)的无人机三维路径规划项目,利用Python实现了在复杂三维环境中为无人机规划安全、高效、低能耗飞行路径的完整解决方案。项目涵盖空间环境建模、无人机动力学约束、路径编码、多目标代价函数设计以及CPO算法的核心实现。通过体素网格建模、动态障碍物处理、路径平滑技术和多约束融合机制,系统能够在高维、密集障碍环境下快速搜索出满足飞行可行性、安全性与能效最优的路径,并支持在线重规划以适应动态环境变化。文中还提供了关键模块的代码示例,包括环境建模、路径评估和CPO优化流程。; 适合人群:具备一定Python编程基础和优化算法基础知识,从事无人机、智能机器人、路径规划或智能优化算法研究的相关科研人员与工程技术人员,尤其适合研究生及有一定工作经验的研发工程师。; 使用场景及目标:①应用于复杂三维环境下的无人机自主导航与避障;②研究智能优化算法(如CPO)在路径规划中的实际部署与性能优化;③实现多目标(路径最短、能耗最低、安全性最高)耦合条件下的工程化路径求解;④构建可扩展的智能无人系统决策框架。; 阅读建议:建议结合文中模型架构与代码示例进行实践运行,重点关注目标函数设计、CPO算法改进策略与约束处理机制,宜在仿真环境中测试不同场景以深入理解算法行为与系统鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值