借助快速排序算法思想,在一组无序的记录中查找给定关键字值等于key的记录。假设此组记录存放于数组r[l...h]中,若查找成功,则输出该记录在r数组中的位置及其
借助快速排序算法思想,在一组无序的记录中查找给定关键字值等于key的记录。假设此组记录存放于数组r[l...h]中,若查找成功,则输出该记录在r数组中的位置及其值,否则显示not find信息。
程序代码:#include <stdio.h>
int chazhao(char *p,const char k){
int i=0;
while(*(p+i)!='\0'){
if(*(p+i)==k){
return(i);
}
i++;
}
return(0);
}
int main(void)
{
int i=0;
char key;
char r[128]={0};
printf("请输入无序字符串:\n");
gets(r);
printf("请输入关键字:\n");
scanf("%c",&key);
i=chazhao(r,key);
if(i==0){
printf("亲,没找到你要的。\n");
}else{
printf("亲,你要找的%c在第%d位,里面是%c。\n",key,i+1,r[i]);
}
return(0);
}
~
程序代码:
#include<stdio.h>
size_t fun(char* p,int key,size_t l,size_t h);
int main( void )
{
char s[]={"abcdefg"};
size_t l=0;
size_t h=sizeof(s)/sizeof(char)-2;
size_t i=0;
if (h!=-1&&(i=fun(s,'g',l,h))!=h+1)
printf("Yes:%u\n",i);
else
printf("No\n");
return 0;
}
size_t fun(char* p,int key,size_t l,size_t h)
{
char* t=p;
char c=*(t+h);
if (l>h)
return h+1;
else if (*(t+h)==key)
return h;
*(t+h)=key;
p+=l;
while (*p++!=key);
*(t+h)=c;
return p-t-1!=h?p-t-1:p-t;
}
}[此贴子已经被作者于2017-12-22 11:47编辑过]
