写一段C语言 三分搜索的代码
时间: 2023-11-29 17:03:04 浏览: 23
好的,以下是C语言的三分搜索代码:
```c
int ternarySearch(int arr[], int left, int right, int key) {
while (right >= left) {
int mid1 = left + (right - left) / 3;
int mid2 = right - (right - left) / 3;
if (arr[mid1] == key) {
return mid1;
}
if (arr[mid2] == key) {
return mid2;
}
if (key < arr[mid1]) {
right = mid1 - 1;
}
else if (key > arr[mid2]) {
left = mid2 + 1;
}
else {
left = mid1 + 1;
right = mid2 - 1;
}
}
return -1;
}
```
希望对你有帮助!
相关问题
写一段C语言韩信分油的代码
我可以回答这个问题。以下是一段C语言韩信分油的代码:
#include <stdio.h>
int main() {
int a, b, c;
printf("请输入三个数字:\n");
scanf("%d%d%d", &a, &b, &c);
if ((a + b + c) % 3 != 0) {
printf("无法分配\n");
} else {
int avg = (a + b + c) / 3;
int step = 0;
while (a != avg || b != avg || c != avg) {
if (a > avg) {
b += a - avg;
step++;
}
if (c > avg) {
b += c - avg;
step++;
}
if (b > avg) {
a += b - avg;
c += b - avg;
step++;
}
}
printf("最少需要%d次分配\n", step);
}
return 0;
}
写一段 C语言 输入表格 并对表格数据排序 输出新表格
好的,让我来回答您的问题。
以下是一个简单的 C 代码,可以让用户输入一个表格,然后对表格中的数据进行排序,最后输出新的表格。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ROWS 50
#define MAX_COLS 20
#define MAX_LEN 50
// 表格结构体
typedef struct {
char data[MAX_ROWS][MAX_COLS][MAX_LEN];
int rows;
int cols;
} Table;
// 比较函数,用于排序
int compare(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
int main() {
Table table;
char buffer[MAX_LEN];
int i, j;
// 读取表格
printf("请输入表格数据(以逗号分隔,回车表示一行结束):\n");
for (i = 0; i < MAX_ROWS; i++) {
fgets(buffer, MAX_LEN, stdin);
if (buffer[0] == '\n') {
break;
}
char *token = strtok(buffer, ",");
j = 0;
while (token != NULL && j < MAX_COLS) {
strcpy(table.data[i][j], token);
token = strtok(NULL, ",");
j++;
}
}
table.rows = i;
table.cols = j;
// 对表格数据进行排序
for (i = 0; i < table.rows; i++) {
qsort(table.data[i], table.cols, sizeof(char[MAX_LEN]), compare);
}
// 输出新表格
printf("排序后的表格为:\n");
for (i = 0; i < table.rows; i++) {
for (j = 0; j < table.cols; j++) {
printf("%s\t", table.data[i][j]);
}
printf("\n");
}
return 0;
}
```
代码的主要思路是先定义一个表格结构体,然后读取用户输入的表格数据,并对表格数据进行排序,最后输出新的表格。
需要注意的是,这段代码中使用了 C 标准库函数 `qsort()` 对表格数据进行排序。`qsort()` 函数的第一个参数是要排序的数组,第二个参数是数组中元素的个数,第三个参数是每个元素的大小,第四个参数是一个比较函数,用于比较两个元素的大小。在本代码中,比较函数 `compare()` 用于比较两个字符串的大小。