找出数组中前三个大数c语言
时间: 2023-05-15 07:07:30 浏览: 205
可以使用冒泡排序或快速排序等算法来找出数组中前三个大数。以下是使用冒泡排序的示例代码:
```c
#include <stdio.h>
void bubble_sort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, n);
printf("前三个大数为:%d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
```
输出结果为:
```
前三个大数为:9 6 5
```
相关问题
c语言编写找出数组中第二大的数
在C语言中,找出数组中的第二大数可以通过遍历数组并维护两个变量来完成,一个是当前的最大值(max),另一个是次大值(second_max)。如果当前元素大于最大值,就将最大值赋给次大值,并更新最大值。下面是一个简单的示例:
```c
#include <stdio.h>
int findSecondLargest(int arr[], int size) {
// 初始化最大值和次大值为数组的第一个元素
int max = arr[0], second_max = arr[0];
// 遍历数组从第二个元素开始
for (int i = 1; i < size; i++) {
// 如果当前元素大于最大值,更新最大值和次大值
if (arr[i] > max) {
second_max = max;
max = arr[i];
// 否则,如果当前元素不是最大值但比次大值大,更新次大值
} else if (arr[i] > second_max && arr[i] != max) {
second_max = arr[i];
}
}
// 返回次大值
return second_max;
}
int main() {
int array[] = {5, 2, 8, 9, 1};
int size = sizeof(array) / sizeof(array[0]);
int second_largest = findSecondLargest(array, size);
printf("The second largest number is: %d\n", second_largest);
return 0;
}
```
这个程序会在给定数组中找到并返回第二大的数。如果数组中有相同的数值并且你想找到不同的第二大数(比如有三个相同的最大值),你需要稍作修改以忽略这些重复值。
找出一个随机数组中第三大的数,C语言代码
在C语言中,找出一个未排序数组中的第三大数并不是一项简单的任务,因为直接遍历整个数组将需要O(n)的时间复杂度。一种常见的优化方法是使用两个指针分别跟踪第一、第二和第三大的元素。下面是一个示例代码:
```c
#include <stdio.h>
#include <limits.h>
// 假设数组已包含n个非负整数,并且n >= 3
int findThirdLargest(int arr[], int n) {
if (n < 3) {
printf("Array must have at least three elements.\n");
return INT_MIN; // 或者抛出错误
}
int first = INT_MAX, second = INT_MAX, third = INT_MAX;
for (int i = 0; i < n; i++) {
if (arr[i] > first) {
third = second;
second = first;
first = arr[i];
} else if (arr[i] > second && arr[i] != first) {
third = second;
second = arr[i];
} else if (arr[i] > third && arr[i] != first && arr[i] != second) {
third = arr[i];
}
}
if (third == INT_MAX) {
printf("There is no third largest element in the array.\n");
return -1; // 如果所有元素都相同,则没有第三大
}
return third;
}
int main() {
int arr[] = {5, 2, 9, 7, 4, 6, 8};
int n = sizeof(arr) / sizeof(arr[0]);
int third_largest = findThirdLargest(arr, n);
if (third_largest != -1)
printf("The third largest number is: %d\n", third_largest);
return 0;
}
```
这个函数首先假设数组有三个以上的元素,然后通过迭代找到最大值并更新`first`、`second`和`third`。注意,这个算法只适用于非负整数的情况。
阅读全文
相关推荐













