4002.基于快排思想的查找
Posted wind-chaser
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4002.基于快排思想的查找相关的知识,希望对你有一定的参考价值。
发布时间: 2018年11月26日 10:12 时间限制: 1000ms 内存限制: 128M
基于快排思想,其实就是两面开工呗~
借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key的记录。设此组记录存放于数组r[l..n]中。若查找成功,则输出该记录在r数组中的位置及其值,否则显示“not find”信息。
多组数据,每组数据三行。第一行为序列的长度n,第二行为序列的n个元素(元素之间用空格分隔,元素都为正整数),第三行为要查找的key值。当n等于0时,输入结束。
每组数据输出一行。如果查找成功,输出key在数组中的位置(1到n)和key的值,两个数字之间用空格隔开。如果查找失败,输出“not find”。
5 1 2 43 5 6 43 4 1 9 20 3 21 0
3 43 not find
1 #include<iostream> 2 using namespace std; 3 int search(int r[], int low, int high, int key) 4 { 5 while (low<high) 6 { 7 while (low <= high&&r[high] > key)high--; 8 if (r[high] == key)return high; 9 while (low <= high&&r[low] < key)low++; 10 if (r[low] == key)return low; 11 } 12 cout << "not find" << endl; 13 return 0; 14 } 15 int main() 16 { 17 int n; 18 while (true) 19 { 20 int a[10000],aim; 21 cin >> n; 22 if (!n)break; 23 for (int i = 0; i < n; i++) 24 { 25 cin >> a[i]; 26 } 27 cin >> aim; 28 if(search(a, 0, n, aim)) 29 cout << search(a,0,n,aim)+1 << " " << aim << endl; 30 } 31 }
以上是关于4002.基于快排思想的查找的主要内容,如果未能解决你的问题,请参考以下文章