博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第二章作业心得
阅读量:5340 次
发布时间:2019-06-15

本文共 1132 字,大约阅读时间需要 3 分钟。

第二章作业涵盖的知识点比较广,很多都在上个学期的数据结构课程上有讲过,所以说也是一次复习的机会。

首先想讲一下二分法的理解:

根据课堂学习的理解,就是给出定值K,然后与表中的中间元素进行关键字比较,若相等,中,则向右查找,直到找到关键词的我们则返回他的存储位置;如果不等的话,则如二分查找算法题位置。

包括后面第二课堂的实践报告中也会提及到二分法的运用。而本次作业中二分法的运用体现在第一题的寻找第K小的数上,首先定义了partition函数来实现了根据a[left]~a[right]中的某个元素x(如a[left])对a[left]~a[right]进行划分,划分后的x所在位置的左段全小于等于x,右段全大于等于x,同时利用x所在的位置还可以计算出x是这批数据按升非降序排列的第几个数。

int partition(int a[],int left, int right){

int x = a [left];
while (left <right )
{
while (left < right && a[right] >= x)
right--;
a [left] = a [right];
while (left<right &&a [left] <= x)
left++;
a[right] = a[left];
}
a[left]=x;
return left;
}

然后也写出了find函数来实现查找功能,最后则用main函数实现了他的定义功能。

int find(int a[], int left, int right, int k)

{
int pos = partition(a,left,right);
if (k -1 ==pos)
cout<<a[k-1];
else if (k-1<pos)
find(a,left,pos -1,k);
else
find(a,pos+1,right,k);
return 0;

 

}

 

int main()

{
int n, k;
cin >>n>>k;
int a[1000];
for(int i =0; i<n; i++)
cin >>a[i];
find(a,0,n-1,k);
return 0;
}

 

感觉从这次作业还是看出对于一些算法思想的理解还是比较陌生的,后面的算法学习设计到的不仅仅是编程能力的运用,还有一些数学理论以及思路构思的一些方面,所以我觉得课余还是需要多复习好数据结构的一些知识并且把编程能力提上去,这样才能减少在日后的算法学习上浪费而太多的时间在算法学习以外。

转载于:https://www.cnblogs.com/yamaforyou/p/9788659.html

你可能感兴趣的文章
2019-06-19 滴滴打车一面
查看>>
SQL SERVER 简体与繁体 定序 轉換
查看>>
软件工程时间进度表
查看>>
2015阿里前端工程师在线笔试整理
查看>>
Something about technical writing and documentation
查看>>
FTP 与 SFTP 与 vsFTP
查看>>
Fortify漏洞之Access Control: Database(数据越权)
查看>>
使用JavaScript 做一些頁面卡控
查看>>
Python学习(十) —— 常用模块
查看>>
Python学习(一) —— 基础
查看>>
Rest中获取制定操作的UriTemplate
查看>>
吴裕雄 python 机器学习——线性判断分析LinearDiscriminantAnalysis
查看>>
吴裕雄 python 机器学习——模型选择回归问题性能度量
查看>>
吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:除了屏幕阅读器外,其他设备上隐藏元素...
查看>>
BackgroundBlur_背景模糊高斯模糊
查看>>
splay模板
查看>>
关于计算器。。。。
查看>>
hadoop基础题
查看>>
【洛谷1219】 八皇后 (搜索)
查看>>
【转载】32复用时钟AFIO开启情况
查看>>