国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

二分法查找學生信息

2019-11-08 00:39:38
字體:
來源:轉載
供稿:網友

學習數據結構與算法,二分查找法是必須要掌握的算法,該算法前提是待查找序列已單調有序,從序列中間值開始與目標值匹配,如果相等,則查找成功,如果比目標值大,則在待查找序列前半段繼續查找,如果比目標值小,則在待查找序列后半段繼續查找,直到查找成功,或待查找序列沒有與目標值相匹配的值。 二分查找法時間復雜度為O(logn),而順序查找時間復雜度為O(n) 輸入:先輸入一個整數n,為待查找學生個數。接著輸入n個學生信息,學生信息包括學號,姓名,性別,年齡。接著再輸入一個學號,為想要查找的學生學號 輸出:目標學生的全部信息 示例:4 01 楊凱 男 19 02 周峰 男 20 03 張瑩 女 20 04 劉宇 男 19 03 03 張瑩 女 20 代碼:

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<algorithm>using namespace std;struct Student{ //學生結構體 char id[100];//學號 char name[100];//姓名 int age;//年齡 char sex[5];//性別 bool Operator<(const Student & A)const { //重載“<”運算符,下面的sort函數要用到 return strcmp (id, A.id) < 0; }}stu[1000];int main (){ int n; scanf ("%d", &n); for (int i = 0; i < n; i++) { scanf ("%s%s%s%d", stu[i].id, stu[i].name, stu[i].sex, &stu[i].age); } sort (stu, stu + n); //按照學號由大到小排列 while (1) { int ans = -1; char x[30]; scanf ("%s", x); int high = n - 1, low = 0; //初始最高下標為n-1,最低下標為0 while (high >= low) { //二分查找核心代碼,注意二分查找要求查找空間單調有序 int mid = (high + low) / 2; //取中間下標 int tmp = strcmp (stu[mid].id, x); //比較中間下標對應的學生學號與所要查找的學號是否相等 if (tmp == 0) { //相等,查找成功 ans = mid; break; } else if (tmp > 0) //若stu[mid]大于x,則讓最高下標成為中間下標-1,重新查找 high = mid - 1; else // low = mid + 1; //若stu[mid]小于x,則讓最低下標成為中間下標+1,重新查找 } if (ans == -1) { //查找失敗 PRintf ("No Answer!/n"); } else printf ("%s %s %s %d/n", stu[ans].id, stu[ans].name, stu[ans].sex, stu[ans].age); } system ("pause"); return 0;}
上一篇:定位資源

下一篇:圖的深度遍歷

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杨浦区| 竹山县| 甘孜县| 阿拉尔市| 威海市| 阳曲县| 外汇| 伊金霍洛旗| 宜阳县| 博野县| 郓城县| 儋州市| 三穗县| 屯昌县| 苍山县| 正阳县| 从江县| 高青县| 河间市| 班戈县| 信丰县| 千阳县| 缙云县| 太原市| 南京市| 靖安县| 沧州市| 时尚| 枣强县| 望奎县| 南陵县| 鸡西市| 长武县| 舞阳县| 余姚市| 沁阳市| 靖州| 安义县| 蒙自县| 汉中市| 扶余县|