c語言數據結構學習心得——查找
阿新 • • 發佈:2019-03-29
找到 折半查找 binary 所有結點 color 比較 排序樹 col 元素
順序查找(線性查找)
主要用於在線性表中的查找
int Search1(int a[],int n,int key){ for(int i=1;i<=n;i++){ //註意從1開始 if(a[i]==key)return i; //查找成功 } return 0; //查找失敗 }
int Search2(int a[],int n,int key){ int i=n; a[0]=key; //設置“哨兵”while(a[i]==key){ //若不是找的元素 i--; //從前往後查找 } return i; //查找失敗也返回0 }
折半查找
僅適用於有序的順序表
算法思路:首先將給定值key與表中中間位置的元素的關鍵字比較,若相等,則查找成功,返回該元素的存儲位置;若不等,則所需查找的元素只能在中間的元素以外的前半部分或後半部分中。然後在縮小的範圍內繼續進行同樣的查找,如此重復知道找到為止,或者確定表中元素無所需的查找元素,則失效,返回失敗信息。
分塊查找(索引順序查找)
1.確定待查找值在哪個塊(折半查找)
2.在確定的塊中查找待查找值(順序查找)
二叉排序樹(Binary Search Tree 二叉搜索樹)
或是一棵空樹,或是具有以下性質的二叉樹
1.若左子樹不空,則左子樹上所有結點值均小於其根結點的值
2.若右子樹不空,則右子樹上所有結點值均小於其根結點的值
3.左右子樹也是一棵二叉排序樹
二叉排序樹的目的不是為了排序,是為了提高查找(有序)和插入刪除(樹型結構)關鍵字的速度。
typedef struct BiTNode{ //二叉排序樹結點結構 int data; //結點數據 struct BiTNode *lchild,*rchild; //指向該結點左右孩子的指針 }BiTNode,*BiTree
一.二叉排序樹查找關鍵字代碼
遞歸代碼:
BiTNode *BST_Search(BiTNode *t,ElemType key){ if(t==NULL)return NULL; //若樹為空則為空值 else{ if(t->key==key)return t; else if(key<t->key)return BST_Search(t->lchild,key); else if(key>t->key)return BST_Search(t->rchild,key); } }
非遞歸代碼
BiTNode *BST_Search(BiTNode *t,ElemType key){
BitNode *p=t;
c語言數據結構學習心得——查找