C语言冒泡排序查找数组极值:代码实现及优化
#include <stdio.h>
void bubble_sort(int arr[], int n, int direction) { int i, j, temp; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (direction == 1 && arr[j] > arr[j + 1]) { // 正向冒泡 temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } else if (direction == 2 && arr[j] < arr[j + 1]) { // 反向冒泡 temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } }
void find_extreme(int arr[], int n, int direction, int extreme_type) { int i, extreme_index; if (extreme_type == 1) { // 最大值 extreme_index = 0; for (i = 1; i < n; i++) { if ((direction == 1 && arr[i] > arr[extreme_index]) || (direction == 2 && arr[i] < arr[extreme_index])) { extreme_index = i; } } printf('最大值为:%d\n', arr[extreme_index]); } else if (extreme_type == 2) { // 最小值 extreme_index = 0; for (i = 1; i < n; i++) { if ((direction == 1 && arr[i] < arr[extreme_index]) || (direction == 2 && arr[i] > arr[extreme_index])) { extreme_index = i; } } printf('最小值为:%d\n', arr[extreme_index]); } }
int main() { int arr[20], n, i, direction, extreme_type; printf('请输入数组元素个数(不超过20):'); scanf('%d', &n); printf('请输入%d个互不相同的整数:', n); for (i = 0; i < n; i++) { scanf('%d', &arr[i]); } printf('请输入冒泡方向(1一正向,2一反向):'); scanf('%d', &direction); printf('请输入极值类型(1一最大值,2一最小值):'); scanf('%d', &extreme_type); printf('排序前的数组:'); for (i = 0; i < n; i++) { printf('%d ', arr[i]); } printf('\n'); bubble_sort(arr, n, direction); printf('排序后的数组:'); for (i = 0; i < n; i++) { printf('%d ', arr[i]); } printf('\n'); find_extreme(arr, n, direction, extreme_type); return 0; }
原文地址: https://www.cveoy.top/t/topic/nWq0 著作权归作者所有。请勿转载和采集!