找出数组中最大的几个数并给出索引值C语言
时间: 2023-08-05 22:04:50 浏览: 109
可以使用选择排序或冒泡排序来解决这个问题。以下是使用选择排序的示例代码,用于查找数组中的前k个最大元素以及它们的索引值:
```c
#include <stdio.h>
#define MAX_SIZE 100
void selection_sort(int arr[], int n);
int main() {
int arr[MAX_SIZE], n, k, i, j, max_index;
printf("Enter the size of the array: ");
scanf("%d", &n);
printf("Enter the elements of the array:\n");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("Enter the value of k: ");
scanf("%d", &k);
printf("The %d largest elements in the array are:\n", k);
for (i = 0; i < k; i++) {
max_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] > arr[max_index]) {
max_index = j;
}
}
printf("%d (%d)\n", arr[max_index], max_index);
int temp = arr[i];
arr[i] = arr[max_index];
arr[max_index] = temp;
}
return 0;
}
void selection_sort(int arr[], int n) {
int i, j, min_index, temp;
for (i = 0; i < n - 1; i++) {
min_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
```
在上面的代码中,我们使用了一个嵌套的for循环来查找最大元素的索引值,并将其与第i个元素进行交换,以此来逐步排列数组。注意,在选择排序的过程中,我们需要调用另一个函数selection_sort()来进行排序,以便在每次查找最大元素的时候都保证数组是有序的。
阅读全文