基础题1
来源:互联网 发布:矩阵如何计算 编辑:程序博客网 时间:2024/06/09 18:45
实验内容:
1、 分别编制函数实现二分检索、冒泡排序算法,从键盘上输入数据分别进行检索和排序。
2、 分析算法在你所输入的数据的情况下分别作了多少次基本操作。
实验要求:
1、 首先对如下数据[29, 58, 15, 67, 86, 43, 25, 25,30]进行冒泡排序,并分析其比较次数和稳定性,然后从键盘上任意输入一个数用二分搜索算法搜索该数是否在上述数组中,同时输出比较次数。
#include<stdio.h>int Find(int a[],int x,int length);void swap(int *a,int *b);int main(){int array[9]={29, 58, 15, 67, 86, 43, 25, 25, 30};int i,j;int num=0;int x,length=9;int flag;for(i=0;i<9;i++){for(j=8;j>=i;j--){num++;if(array[j]<array[j-1]){swap(&array[j-1],&array[j]);}}}for(i=0;i<9;i++){printf("%d ",array[i]);}printf("\n");printf("请输入要查找的元素: ");scanf("%d",&x);flag=Find(array,x,length); if(flag>=0)if(flag==1||flag==2){printf("要查找的数据是数组中第2或3个元素\n");}else{printf("要查找的数据是数组中第%d个元素\n",flag+1);} else printf("没有找到要找的数\n");printf("比较次数为%d\n",num);return 0;}int Find(int a[],int x,int length){int low,high;int mid;low=0; high=length-1;while(low<=high){mid=(low+high)/2;if(x<a[mid]) high=mid-1;else if(x>a[mid]) low=mid+1;else return mid;}return -1; //和输出要查找数的下标相关,而数组的首个字下标是0.会出问题}void swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}
0 0
- Java 基础题1
- net基础题(1)
- 基础题1
- 基础题1
- 基础题1
- 基础题1
- 基础题1
- 编程基础题-1
- C++笔试基础题(1)
- 刷刷编程基础题~(1)
- 1、Android基础笔试题
- 基础题
- 基础题
- 基础题
- 基础题
- 1:基础
- 基础1
- 基础1
- woods of Vietnam
- 堆排序详解
- Android Studio导入Github项目时Plugin错误的解决办法
- android 中利用AChartEngine动态更新折线实现
- Linux那点事
- 基础题1
- 期中考试-B
- 正则表达式30分钟入门教程
- 菜鸟初学c++,一些零散小知识点
- 多个客户机之间配置ssh免秘钥登录
- 20 个前端开发 Bootstrap 后台管理模板
- 开源组织管理模式演变
- 输出给定数组中每种元素出现的次数
- 51nod 1396 还是01串【前缀和】