C语言算法锦集(六) 数组常用操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组常用算法:
查找:
/*线性查找*/
int find(int num,int x[],int key)
{ int i,m=-1;
for(i=0;i if(x[i]==key){ m=i; break; } return m; } /*折半查找*/ int find(int x[],int num,int key) { int m=-1,low=0,high=num-1,mid; while(low<=high){ mid=(low+high)/2; if(x[mid]==key){ m=mid; break; } else if(x[mid]>key) high=mid-1; else low=mid+1; } return m; } /*折半查找(递归)*/ int b_search(int x[ ],int low,int high,int key) { int mid; mid=(low+high)/2; if(x[mid]==key) return mid; if(low>=high) return -1; else if(key return b_search(x,low,mid-1,key); else return b_search(x,mid+1,high,key); } /*寻找子串*/ int find(char *s1,char *s2) { int i,k=0; while(s1[i]==s2[i]) i++; if(s2[i]==0) return k; s1++; k++; return -1; } 分词: /*方法一*/ void fen(char s[][10],char str) { int i,j,k; for(i=0,j=0,k=0;str[i]!=0;i++) if(isalpha(a[i])) s[j][k++]=str[i]; else { s[j][k]=0; k=0; j++; } } } /*方法二*/ #include #include void main() { int i=0,n=0;char s[80],*p; strcpy(s,"It is a book."); for(p=s;p!='\0';p++) if(*p=='') i=0; else if(i==0) {n++;i=1;} printf("%d\n",n); getch(); } 排序: /*插入法排序*/ void sort(int a[],int n) { int i,j,t;