【C语言】求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素

//求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素
#include <stdio.h>
#include <string.h>
int find_min(int arr[],int len)
{
	int i = 0;
	for (i = 1; i < len; i++)
	{
		if (arr[i] < arr[0])
			return arr[i];
	}
	return arr[0];
}
int main()
{
	int i;
	int arr1[] = { 1, 2, 3, 4, 5 };
	int arr2[] = { 2, 2, 3, 4, 5 };
	int arr3[] = { 4, 5, 1, 2, 3 };
        printf("arr1最小元素是\n",find_min(arr1,sizeof(arr1)/sizeof(arr1[0])));
        printf("arr2最小元素是\n",find_min(arr2,sizeof(arr2)/sizeof(arr2[0])));
        printf("arr3最小元素是\n",find_min(arr3,sizeof(arr3)/sizeof(arr3[0])));
	return 0;
}
时间: 2024-10-03 13:28:05

【C语言】求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素的相关文章

【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素

//旋转数组的最小数字 //题目:把一个数组最開始的若干个元素搬到数组的末尾.我们称之为数组的旋转. //输入一个递增排序的数组的一个旋转.输出旋转数组中的最小元素. //比如:数组{3.4,5,1,2}为{1,2.3.4.5}的一个旋转,最小元素是1. #include <stdio.h> #include <assert.h> int min_equ(int *src, int left, int right) { int i = 0; int ret = src[left];

输入一个递增排序的数组和一个数字 s

题目: 输入一个递增排序的数组和一个数字 s. 在数组中查找两个数,使得它们的和正好是 s. 如果有多对数字的和等于 s,输出任意一对即可. 解答: 1 public class Solution { 2 3 public static void main(String[] args) { 4 int[] data = {1,2,4,7,11,15}; 5 System.out.println(findNumberWithSum(data, 15)); 6 } 7 8 private stati

输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

两种解题步骤1:考虑乘积最小的情况: public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<ArrayList<Integer>> lists = new ArrayList<>(); for(int i=0;i<array.length;i++){ ArrayList<Integer> list = new ArrayList<&

【C练习】两个已经从小到大的数组合并成为一个从小到大排序的数组

两个已经从小到大的数组合并成为一个从小到大排序的数组 1 #include<stdio.h> 2 int main() 3 { 4 int m,n,i,j,k,tem=0; 5 printf("这两个数组分别有多少个数:\n"); 6 scanf("%d%d",&m,&n); 7 int a[m],b[n],c[m+n]; 8 printf("从小到大输入%d个数:\n",m); 9 for(i=0;i<m;i+

一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的 相对顺序 比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求时间复杂度O(N),空间O(1) 。

#include <iostream> using namespace std; void mSort(int *arr, int iLen) { int i, j, k, tmp; for(i = 0, j = 0; i < iLen; i++) { if (arr[i] < 0) { tmp = arr[i]; for(k = i; k > j; k--) arr[k] = arr[k - 1]; arr[j++] = tmp; } } } int main() { in

c语言求字符串中大写字母个数,单词个数,子串个数及一个整数是否为回文数

#include <stdio.h> #include <ctype.h> #pragma mark 统计从终端输入的字符中每个大写字母的个数.用#号作为输入结束标志 int main() { int num[26] = {0}, i; char c; while ((c = getchar())!='#') { if (isupper(c)) { num[c-65]++; } } for (int i = 0; i<26; i++) { if (num[i]) { prin

偶然在博客中见对百度一个面试题的探讨,写些自己的看法以及指出探讨中不对的观点:百度面试题:求绝对值最小的数 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现 例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。

今天申请了博客园账号,在下班后阅览博客时发现了一个关于百度面试题探讨的博客(其实是个很基础的问题),此博客url为:http://www.blogjava.net/nokiaguy/archive/2013/01/30/394920.html 其中下面有人评论为: 有序列表查找显然二分啊,博主貌似对java的arrays和collections不是很熟. private static int getMinAbsoluteValue(final int[] source) { int index

创建一个字符串数组,总共5个元素,每个元素最多保存30个字符,写一个函数排序整个数组。

第一种:(类似冒泡排序) #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char a[5][30]={"aaa","bbb","ccc","adb","degf"}; int i=0; int j=0; char b[30]; for(i=0;i<4;i++) { for(j

求旋转数组的最小数字算法的解析以及完整c语言代码实现

首先了解什么是旋转数组:即把一个数组的最开始的若干个元素搬到数组的末尾,即成为旋转数组,例如数组{3,7,1,8,2}为{1,8,2,3,7}的一个旋转数组. 题目:输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素,例如{1,2,3,4,5}数组的一个旋转数组{3,4,5,1,2},其最小的元素为1, 解析:看到题目以后,我们首先可能会想到遍历这个数组,即可找到最小的元素,时间复杂度为o(n),但是这个思路显然没有利用到数组是递增排序的特性,因此我们得继续寻找更优 的方法,因为原本数组是