数组中最大差(左边有序)

#include<iostream.h>

//分治理法求解
int   max_diff(int a[],int low,int high)//max min 返回最大值与最小值;
{

	if(high-low<=0)
	{
		
		
		return -1000;//返回一个值就行,无用很小的值
	}
    int mid=(low+high)/2;
	int  leftDiffer=max_diff(a,low,mid);
	int rightDiffer=max_diff(a,mid+1,high);
	int maxleft=a[low];
	int minright=a[mid+1];
		int i=low+1;
	    int j=mid+2;
	for(;i<=mid;i++)
	{
		  if(a[i]>maxleft)
		  {
			   maxleft=a[i];
		  }

	}
     for(;j<=high;j++)
	{
		  if(a[j]<minright)
		  {
			   minright=a[j];
		  }

	}
	 int maxDIff=leftDiffer;

    int crossDiff=maxleft-minright;
	if(maxDIff<rightDiffer)
		maxDIff=rightDiffer;
	if(maxDIff<crossDiff)
		maxDIff=crossDiff;
}
//动态规划解法max保存当前最大值,cur保存最大差值
int max_diff2(int a[],int len)
{
	int max=a[0];
	int cur=a[0]-a[1];
	for(int k=2;k<len;k++)
	{
		if(a[k]>max)
			max=a[k];
		int tem=max-a[k];
		if(tem>cur)
			cur=tem;

	}

	return  cur;
}


void main()
{
	

	int a[]={2, 4, 1, 16, 7, 5, 11, 9};
	int differ= max_diff(a,0,7);
	cout<<"the differ is"<<differ<<endl;
	differ=max_diff2(a,8);
	cout<<"the differ is"<<differ<<endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用快速排序算法来实现将数组中的元素按从小到大输出。以下是一个示例代码: ``` function quickSort(arr) if #arr <= 1 then return arr end local pivot = arr[1] local left = {} local right = {} for i = 2, #arr do if arr[i] < pivot then table.insert(left, arr[i]) else table.insert(right, arr[i]) end end return table.concat({quickSort(left), {pivot}, quickSort(right)}) end local arr = {5, 3, 9, 1, 7} local sortedArr = quickSort(arr) for i = 1, #sortedArr do print(sortedArr[i]) end ``` 这段代码使用了递归的快速排序算法来对数组进行排序,最后将排序后的结果按顺序输出。 ### 回答2: 要将数组中的元素按从小到大输出,可以采用排序的方法。一种常见的排序算法是冒泡排序。 冒泡排序的基本思想是比较相邻的两个元素,如果它们的顺序不满足要,则交换它们的位置。通过多次的比较和交换,最终将最大(或最小)的元素冒泡到数组的末尾。重复以上过程,直到所有元素都被排序。 具体实现时,可以使用两层循环。外层循环控制排序的次数,内层循环实现相邻元素的比较和交换。 以下是用冒泡排序将数组元素从小到大输出的示例代码: ```python def bubble_sort(arr): n = len(arr) for i in range(n-1): # 外层循环控制排序次数 for j in range(n-i-1): # 内层循环实现相邻元素比较和交换 if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr # 调用函数进行排序 arr = [9, 5, 2, 7, 1, 3] sorted_arr = bubble_sort(arr) # 输出排序后的数组元素 for num in sorted_arr: print(num, end=" ") ``` 以上代码的输出结果为:1 2 3 5 7 9,即将原始数组 [9, 5, 2, 7, 1, 3] 的元素按从小到大输出。 ### 回答3: 要将数组中的元素按从小到大的顺序输出,我们可以使用排序算法来实现。常见的排序算法有冒泡排序、选择排序、插入排序、快速排序等。下面以快速排序为例来进行说明。 快速排序的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后再按此方法对这两部分数据分别进行快速排序,整个过程递归进行,最终使整个数组变为有序序列。 具体实现步骤如下: 1. 首先选择一个基准元素,可以选择数组的第一个元素。 2. 将数组分成两部分,小于等于基准元素的元素放在左边,大于等于基准元素的元素放在右边。 3. 递归地对左右两部分进行快速排序。 4. 最终得到的排序数组即为从小到大的有序序列。 以下是示例代码: ```python def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[0] left = [x for x in arr[1:] if x <= pivot] right = [x for x in arr[1:] if x > pivot] return quick_sort(left) + [pivot] + quick_sort(right) arr = [3, 1, 9, 2, 8, 5] sorted_arr = quick_sort(arr) print(sorted_arr) ``` 以上代码将会输出 `[1, 2, 3, 5, 8, 9]`,即将给定数组元素按从小到大的顺序输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值