标准算法整理III
来源:互联网 发布:金枪鱼软件下载 编辑:程序博客网 时间:2024/06/06 09:31
(一)二分法查找
在有序表中对给定值进行顺序查找和二分查找
int k;//查找次数f1(float a[], float x) //顺序查找{ int i; k=1;//区别 a[0]=x; i=N-1; while(a[i]!=x) { i--;k++; } return(i);//i=0表示没找到}f2(float a[], float x) //二分查找{ int l,m,r,t,flag; t=k=0;//区别 if(x>=a[1]&&x<=a[N-1]) { l=1; r=N-1; flag=0; do{ m=(l+r)/2; if(x<a[m]) r=m-1; else if(x==a[m]) flag=1; else l=m+1; k++; }while(l<=r && flag==0);//关键 if(flag) t=m; } return (t);}
(二)二叉排序树
输入字符串,以查找定义二叉排序树,并以先序、中序、后序遍历二叉树
#include <stdio.h>#include <stdlib.h>typedef struct ptr TRE;struct ptr{ char data; TRE *lchild,*rchild;};//节点定义TRE *f(char ch,TRE *bt){ if(bt==NULL) { bt=(TRE*)malloc(sizeof(TRE));//开辟节点空间 bt->data=ch; bt->lchild=NULL; bt->rchild=NULL; } else if(ch<bt->data) bt->lchild=f(ch,bt->lchild); //递归 else bt->rchild=f(ch,bt->rchild); return bt;}int f1(TRE *bt) //先序{ if(bt!=NULL) { printf("%c ",bt->data); //访问根 f1(bt->lchild); //访问左子树 f1(bt->rchild); //访问右子树 } return 0;}int f2(TRE *bt) //中序,遍历从小到大排列{ if(bt!=NULL) { f2(bt->lchild); printf("%c ",bt->data); f2(bt->rchild); } return 0;}int f3(TRE *bt) //后序{ if(bt!=NULL) { f3(bt->lchild); f3(bt->rchild); printf("%c ",bt->data); } return 0;}int main(){ char ch; TRE *tree=NULL; printf("ch=?"); while((ch=getchar())!='\n') tree=f(ch,tree); printf("preorder:\n"); f1(tree); printf("\ninorder:\n"); f2(tree); printf("\npostorder:\n"); f3(tree); printf("\n"); return 0;}
(三)快速排序
基本思想:
1)选择一个基准元素,通常选择第一个元素或者最后一个元素。
2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。(从右到左,再从左到右)
3)此时基准元素在其排好序后的正确位置
4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。(递归)
void quick_sort(int s[],int l,int r)//l=0,r=N-1{ if(l < r) { int i=l,j=r,x=s[l]; while(i<j) { while(i<j && s[j]>=x)//从右到左找到第一个小于x的数 j--; if(i<j) s[i++]=s[j]; while(i<j && s[i]<=x)//从左往右找到第一个大于x的数 i++; if(i<j) s[j--]=s[i]; } s[i]=x;//i = j的时候,将x填入中间位置 quick_sort(s,l,i-1);//递归调用 quick_sort(s,i+1,r); }}
阅读全文
0 0
- 标准算法整理III
- 标准算法整理Ι
- 标准算法整理ΙΙ
- [整理III]微软等数据结构+算法面试100题[最新第61-80题]
- [整理III]微软等数据结构+算法面试100题[最新第61-80题]
- ogg 整理简洁笔记 III
- uC/OS-III 函数整理
- uC/OS-III 函数整理
- 【算法整理】听说你写的算法很牛?-优质算法衡量标准探讨
- 【算法整理】听说你写的算法很牛?-优质算法衡量标准探讨
- 【算法整理】听说你写的算法很牛?-优质算法衡量标准探讨
- web标准常见问题整理
- web标准常见问题整理
- web标准常见问题整理
- web标准常见问题整理
- 电子政务绩效评价标准整理
- web标准常见问题整理
- 标准SQL资料整理
- 12月18号
- 后工业时代农业发展
- 九周二次课(12月19日) 17.1 celery简介 17.2 celery小例子
- eclipse快捷键详解
- sqlzoo
- 标准算法整理III
- 《Effective Java》------类和接口(2)
- 从事PHP工作,大家知道在不同的阶段需要掌握哪些技能吗?
- CSDN个人博客阅读评论信息的爬取
- linux如何卸载自带的openJdk,并且安装jdk1.8
- js通过Base64 解析html,后台返回的加密字符串
- 树的同构
- DAY009
- git下载百度Apollo时遇见错误 error: RPC failed; result=56, HTTP code = 200.00 KiB/s问题