借助快速排序算法思想,在一组无序的记录中查找给定关键字值等于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编辑过]