十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这样:
创新互联公司是一家专业提供桑植企业网站建设,专注与成都网站建设、网站制作、H5技术、小程序制作等业务。10年已为桑植众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
#includestdio.h
// 计算字符串长度
int len(char a[])
{
int temp=0,i;
for(i=0;a[i]!='\0';i++)
temp++;
return temp;
}
// 获取子串在源串中首次出现的位置索引
int index(char a[], char b[])
{
int i,j,temp;
for(i=0;ilen(a)-len(b);i++)
{
temp=i;
j=0;
while(j=len(b) a[temp]==b[j])
{
temp++;
j++;
}
if(j==len(b))
return i;
}
return -1;//返回-1则没找到指定的子串,否则找到
}
void main()
{
char a[]="hello";
a[len(a)]=' ';//算法改进,在数组a的末尾新增一个空的元素,这样才能hello中找到hello
printf("%d\n",index(a,"llo"));
}
扩展资料:
注意事项
头文件:#include string.h
strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:
char * strchr (const char *str, int c);
参数:str 为要查找的字符串,c 为要查找的字符。
strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。
注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。
返回值:如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。
实例:查找字符5首次出现的位置。
#include stdio.h
#include stdlib.h
#include string.h
int main(){
char *s = "0123456789012345678901234567890";
char *p;
p = strchr(s, '5');
printf("%ld\n", s);
printf("%ld\n", p);
system("pause");
return 0;
}
输出结果:
12016464
12016469
1.索引表的类型可定义如下:
struct IndexItem
{
IndexKeyType index;
//IndexKeyType为事先定义的索引值类型
int start;
//子表中第一个元素所在的下标位置
int length;
//子表的长度域
};
2.首先根据给定的索引值K1,在索引表上查找出索引值等于K1的索引项,以确定对应子表在主表中的开始位置和长度,然后再根据给定的关键字K2,在对应的子表中查找出
3。关键字等于K2的元素。
设数组A是具有mainlist类型的一个主表,数组B是具有indexlist类型的在主表A上建立的一个索引表,m为索引表B的实际长度,即所含的索引项的个数,K1和K2分别为给定
带查找的索引值和关键字,并假定每个子表采用顺序存储,则索引查找算法为:
int Indsch(mainlist A, indexlist B, int m, IndexKeyType K1, KeyType K2)
{//利用主表A和大小为 m 的索引表B索引查找索引值为K1,关键字为K2的记录
//返回该记录在主表中的下标位置,若查找失败则返回-1
int i, j;
for (i = 0; i m; i++)
if (K1 == B[i].index)
break;
if (i == m)
return -1; //查找失败
j = B[i].start;
while (j B[i].start + B[i].length)
{
if (K2 == A[j].key)
break;
else
j++;
}
if (j B[i].start + B[i].length)
return j; //查找成功
else
return -1; //查找失败
}
顾名思义 是类似“目录”的东西 在c语言中可能是数组, 每个元素都是对应的“结构体”(广义)指针
能简短的说明一下你想要什么么,我的理解是给我一个数组,让我排序,最后输出一个从小到大(或从大到小)的数组的原数组元素下表。
比如是s[10]={21,51,12,0,61,81,91,41,71,31} 排序后a[10]={0,12,21,31,41,51,61,71,81,91}
输出为3,2,0,9,7,1,4,8,5,6对应0:s[3]=0,1:s[2]=12,2:s[0]=21,。。。。。。是这样不?
用索引做排序就可以了
void select_sort(int *a, int len) {
int Min;
int *index;
index=(int *)new int[len];
for ( int i=0;ilen;i++ ) index[i]=i;
for (int i = 0; i len - 1; i++) {
for (int j = 1 + i; j len; j++) {
if (a[index[i]] a[index[j]]) {
Min=index[i];
index[i]=index[j];
index[j]=Min;
}
}
}
for ( int i=0;ilen;i++ ) coutindex[i]' '; coutendl;
for ( int i=0;ilen;i++ ) couta[index[i]]' '; coutendl;
delete [] index;
}