zoukankan      html  css  js  c++  java
  • 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 #include<algorithm>
     3 using namespace std;
     4 int search(int r[], int low, int high, int key)
     5 {
     6     while (low<high)
     7     {
     8         if (r[low] > key&&r[high] < key)
     9         {
    10             high--; low++;
    11         }
    12             while (low <= high&&r[high] > key)high--;
    13             if (r[high] == key)return high;
    14             while (low <= high&&r[low] < key)low++;
    15             if (r[low] == key)return low;
    16         
    17         //swap(r[high], r[low]);
    18 
    19     }
    20     cout << "not find" << endl;
    21     return 0;
    22 }
    23 int main()
    24 {
    25     int n;
    26     while (true)
    27     {
    28         int a[10000], aim;
    29         cin >> n;
    30         if (!n)break;
    31         for (int i = 0; i < n; i++)
    32         {
    33             cin >> a[i];
    34         }
    35         cin >> aim;
    36         if (search(a, 0, n, aim))
    37             cout << search(a, 0, n, aim) + 1 << " " << aim << endl;
    38     }
    39 }
  • 相关阅读:
    腾讯实习前端工程师面经-一面-腾讯看点
    Redux的createStore实现
    GNU ARM 汇编基础
    python爬虫学习04-爬取贴吧
    python学习03-使用动态ua
    Python爬虫学习02--pyinstaller
    python爬虫学习01--电子书爬取
    简单的SQL语句学习
    微信小程序的五个生命周期函数
    python学习(12)使用正则表达式
  • 原文地址:https://www.cnblogs.com/wind-chaser/p/10049745.html
Copyright © 2011-2022 走看看