C语言实现二分表查找代码
时间: 2023-05-12 10:04:27 浏览: 63
以下是C语言实现二分表查找的代码:
```
#include <stdio.h>
int binarySearch(int arr[], int left, int right, int x) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
(result == -1) ? printf("Element is not present in array")
: printf("Element is present at index %d", result);
return 0;
}
```
希望对你有所帮助!
相关问题
怎么实现分库分表 代码示例
分库分表是一种常见的数据库设计方案,可以提高系统的性能和扩展性。下面是一个简单的示例代码,演示如何使用分库分表。
假设我们有一个用户表,包含用户的ID、姓名和年龄。我们希望将这个表分为两个库,每个库包含一半的用户,同时在每个库中将用户表分为两个表。
首先,我们需要定义两个数据库连接,分别对应两个库:
```python
import pymysql
db1 = pymysql.connect(host='localhost', port=3306, user='user1', password='password1', db='db1', charset='utf8')
db2 = pymysql.connect(host='localhost', port=3306, user='user2', password='password2', db='db2', charset='utf8')
```
接下来,我们需要定义两个用户表,分别对应两个库中的表:
```python
cur1 = db1.cursor()
cur1.execute('CREATE TABLE user1 (id INT PRIMARY KEY, name VARCHAR(255), age INT)')
cur2 = db2.cursor()
cur2.execute('CREATE TABLE user2 (id INT PRIMARY KEY, name VARCHAR(255), age INT)')
```
然后,我们需要将用户数据按照一定的规则分配到两个表中。例如,我们可以按照用户ID的奇偶性进行分配:
```python
users = [(1, 'Alice', 20), (2, 'Bob', 30), (3, 'Charlie', 25), (4, 'David', 35)]
for user in users:
if user[0] % 2 == 1:
cur1.execute('INSERT INTO user1 (id, name, age) VALUES (%s, %s, %s)', user)
else:
cur2.execute('INSERT INTO user2 (id, name, age) VALUES (%s, %s, %s)', user)
```
最后,我们可以在两个库中查询用户数据:
```python
cur1.execute('SELECT * FROM user1')
for user in cur1.fetchall():
print(user)
cur2.execute('SELECT * FROM user2')
for user in cur2.fetchall():
print(user)
```
这是一个简单的分库分表示例,实际应用中需要根据具体情况进行更复杂的设计和实现。
mongodb分表 java代码
下面是一个简单的MongoDB分表Java代码示例:
1. 首先创建一个MongoDB客户端对象:
```
MongoClient mongoClient = new MongoClient("localhost", 27017);
```
2. 然后创建一个数据库对象:
```
DB db = mongoClient.getDB("mydb");
```
3. 接下来创建一个数据集合对象:
```
DBCollection collection = db.getCollection("mycollection");
```
4. 通过collection对象进行数据操作,例如插入一条数据:
```
DBObject doc = new BasicDBObject("name", "John")
.append("age", 30)
.append("city", "New York");
collection.insert(doc);
```
5. 如果需要对数据进行分表操作,可以使用如下方式:
```
ShardClient shardClient = new ShardClient(mongoClient);
ShardKey shardKey = new ShardKey("city", "name");
DBCollection shardedCollection = shardClient.getShardedCollection(db, "mycollection", shardKey);
DBObject doc = new BasicDBObject("name", "John")
.append("age", 30)
.append("city", "New York");
shardedCollection.insert(doc);
```
其中,shardKey对象指定了分片键,"city"和"name"字段将被用于分片。使用ShardClient.getShardedCollection方法可以得到一个已经进行分片的集合对象,可以像普通集合对象一样进行数据操作。
以上是一个简单的MongoDB分表Java代码示例,供参考。具体实现需要根据实际情况进行调整。