每日一题来噜!(记负均正,旋转数组中的最小数字)

每日一题来噜!(记负均正,旋转数组中的最小数字)_第1张图片

#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
	int n = 0;
	int arr[1000] = { 0 };
	int sum = 0;
	int count = 0;
	int count2 = 0;
	printf("请输入你要输入的整数个数\n");
	// 检查数组越界  
	scanf("%d", &n);
	if (n > 1000) {
		printf("输入的整数个数过多,最多只能输入1000个整数。\n");
		return 1; // 返回一个非零值表示出错  
	}
		for (int i = 0; i < n; i++)
		{
			scanf("%d", &arr[i]);
			if (arr[i] < 0) {
				count++;
			}
			else if (arr[i] > 0) {
				count2++;
				sum += arr[i];
			}
		}
		// 检查是否有正数输入以避免除零错误  
		if (count2 == 0) {
			printf("没有输入正数,无法计算平均值。\n");
			return 1; // 返回一个非零值表示出错  
		}
		printf("%d %d", count, sum / count2);
		return 0;
	}


 每日一题来噜!(记负均正,旋转数组中的最小数字)_第2张图片

#include   
  
int findMin(int arr[], int n) {  
    int left = 0, right = n - 1;  
    while (left <= right) {  
        int mid = left + (right - left) / 2;  
        if (arr[mid] <= arr[right]) {  
            // 最小值在右半部分或者就是数组的最后一个元素  
            left = mid + 1;  
        } else {  
            // 最小值在左半部分或者就是数组的第一个元素  
            right = mid - 1;  
        }  
    }  
    return arr[left];  
}  
  
int main() {  
    int arr[] = {4, 5, 1, 2, 3}; // 旋转后的数组  
    int n = sizeof(arr) / sizeof(arr[0]);  
    int min = findMin(arr, n);  
    printf("最小值是: %d\n", min);  
    return 0;  
}

你可能感兴趣的:(算法,数据结构)