常用查找算法
来源:互联网 发布:淘宝男装毛衣 编辑:程序博客网 时间:2024/04/30 12:57
代码
#include<stdio.h>#include<time.h>#include<stdlib.h> /*=================顺序表的查找========================*///顺序表的查找 :平均O(n) 最好O(1) 最差O(n); int SqSearch(int r[],int n, int key){ int i; for(i=0;i<n;i++){ if(r[i] == key){ return i+1; //返回v第一次出现的位置 } } return 0; //没有查找到v }/*=================有序表的查找========================*///交换值void swap(int r[],int i,int j){ int tmp = r[i]; r[i] = r[j]; r[j] = tmp;} //获取中间位置int partition(int r[],int low, int high){ int privotKey = r[low]; while(low<high){ while(low<high && r[high]>=privotKey)high--; swap(r,low,high); while(low<high && r[low]<=privotKey)low++; swap(r,low,high); } return low;} //快速排序void quickSort(int r[],int low,int high){ if(low<high){ int privotLoc = partition(r,low,high); quickSort(r,low,privotLoc-1); quickSort(r,privotLoc+1,high); }}//打印 void print(int r[], int n){ int i; for(i=0;i<n;i++){ printf("%5d",r[i]); if((i+1)%10==0)printf("\n"); } printf("\n");}//二分查找 :平均O(log n) 最好O(1)int binarySearch(int r[],int n, int key){ int low,high,mid; low = 0; high = n; while(low<=high){ mid = (low+high)/2; if(key == r[mid]){ return mid+1; }else if(key<r[mid]){ high = mid-1; }else{ low = mid+1; } } return (-1);} int main(){ int i; int r[100],key; key = 63; printf("需要查找的数据:\n"); for(i=0;i<100;i++){ //构建数组 r[i] = rand()%100+1; printf("%5d",r[i]); if((i+1)%10 == 0){ printf("\n"); } } printf("顺序表查找:"); printf("%d的位置在:%3d\n\n",key,SqSearch(r,100,key));//输出查找结果 printf("\n先进行快速排序使记录有序,快速排序后:\n"); quickSort(r,0,99); print(r,100); printf("二分查找:"); printf("%d的位置在:%3d\n\n",key,binarySearch(r,99,key));//输出查找结果 return 0;}
执行结果
0 0
- 常用查找算法
- [zt]常用查找算法
- 常用查找算法
- 常用算法- 二分查找
- 常用查找算法
- 常用查找算法
- C++ 常用查找算法
- 常用查找算法
- 常用查找算法总结
- 常用查找算法
- day02--常用算法--查找
- day02--常用算法--查找
- 常用查找算法
- 常用的查找算法
- 常用查找算法
- 常用查找算法 总结
- 常用查找算法总结
- 常用查找算法
- linux 下查找文件和字符串命令 find grep
- Java面试题全集(上)
- 如何让CodeBlocks支持C99
- 数据结构---数组(1)
- List<T>转换为DataTable
- 常用查找算法
- 市场营销书籍推荐
- ukey的密码学原理
- Eclipse中Project Explorer 和 Package Explorer有什么区别
- Push和Pop操作原理
- C语言static 详解
- 1020. Tree Traversals (25)和1385,重建二叉树
- nginx结合tomcat使用
- 使用Hibernate SQLQuery执行原生SQL