输入10个人名和学号.
学号从小到大排列,学号与姓名总在一起
输入姓名,用半折法查找,输出该人学号
如果没有此人,插入此人信息.
输入10个人名和学号.
学号从小到大排列,学号与姓名总在一起
输入姓名,用半折法查找,输出该人学号
如果没有此人,插入此人信息.
给个2分法的简单例题自己看看吧
#include <iostream> using namespace std; int main() { int i, l, h, m, b; int a[6] = { 1,3,5,7,9 }; cin >> b; l = 0; h = 4; do { // 二分查找合适的插入位置 m = ( l+h )/2; if ( a[m] < b ) l = m+1; else if ( a[m] >= b ) h = m-1; } while( l <= h ); for ( i = 6; i > l; --i ) // 腾出位置插入b a[i] = a[i-1]; a[l] = b; // 插入 for ( i = 0; i < 6; ++i ) // 输出 cout << a[i] << ' '; }
开二维数组,1..n,1..2
x,1存放学号,x,2存放姓名
就这么简单
输入姓名,怎么可能折半呢?