目录
- //顺序查找的实现
- typedef struct{
- ElemType *elem;
- int TableLen;
- }SSTable;
- //顺序查找
- //方法一
- int Search_Seq(SSTable ST,ElemType key){
- int i;
- for(i=0;i
- //查找成功,则返回元素下标;查找失败,则返回-1
- return i==ST.TableLen?-1:i;
- }
- //方法二
- int Search_Seq(SSTable ST,ElemType key){
- ST.elem[0]=key; //哨兵
- int i;
- for(i=ST.TableLen;ST.elem[i]!=key;--i);
- return i;
- }
折半查找
又称二分查找。仅适用于有序的顺序表。
- int Binary_Search(SSTable L,ElemType key){
- int low=0,high=L.TableLen-1,mid;
- while(low<=high){
- mod=(low+high)/2;//取中间位置
- if(L.elem[mid]==key)
- return mid;
- else if(L.elem[mid]>key)
- high=mid-1;
- else
- low=mid+1;
- }
- return -1;
- }
直接插入排序
- //直接插入排序
- void InsertSort(int A[],int n){
- int i,j,temp;
- for(i=1;i
- if(A[i]-1]){
- temp=A[i];
- for(j=i-1;j>=0&&A[j]>temp;--j)
- A[j+1]=A[j];
- A[j+1]=temp;
- }
- }
- }
优化——折半插入排序
- //优化——折半插入排序
- void InsertSort(int A[],int n){
- int i,j,low,high,mid;
- for(i=2;i<=n;i++)//依次将A[2]~A[n]插入前面的已排序序列
- {
- A[0]=A[i];
- low=1;high=i-1;//设置折半查找的范围
- while(low<=high){
- mid=(low+high)/2;
- if(A[mid]>A[0])
- high=mid-1;
- else
- low=mid+1;
- }
- for(j=i-1;j>=high+1;--j)
- A[j+1]=A[j];
- A[high+1]=A[0];
- }
- }
希尔排序
- void ShelloSort(int A[],int n){
- int d,i,j;
- //A[0]只是暂存单元,不是哨兵,当j<=0时,插入位置已到
- for(d=n/2;d>=1;d=d/2)//步长变化
- for(i=d+1;i<=n;++i)
-
-
相关阅读:
上位机转算法感想(2022.04-2022.11工作总结)
云音箱工作原理
字符串出现次数的TopK问题
《C++设计模式》——创建型
golang数据结构与算法——递归、迷宫回溯和二叉树的遍历
使用JsonTextReader提高Json.NET反序列化的性能
从 几 个应用入手 了解为什么灵魂绑定代币将为 DeFi 带来大规模采用
WT588F02B-8S(C006_03)单芯片语音ic方案为智能门铃设计降本增效赋能
深度学习之基于YoloV5血红细胞检测识别系统
基于深度学习的小学语文“输出驱动”教学研究课题方案
-
原文地址:https://blog.csdn.net/m0_59073956/article/details/127848449