线性表的顺序表交换最大值和最小值,供参考

该代码实现了一个用于交换两个变量值的函数以及在顺序表中查找并交换最大值和最小值的算法。在`swap`函数中,通过临时变量实现了两个值的交换。`swapMaxMin`函数遍历线性表,找到最大值和最小值的位置,然后调用`swap`函数进行交换。这个过程适用于对数组或线性结构的数据进行操作,优化查找和交换最大最小元素的效率。
摘要由CSDN通过智能技术生成

//交换两个数据 
void swap(ElemType &a,ElemType &b)
{
    int c;
    c=a;
    a=b;
    b=c;
}
//交换线性表中最大值和最小值
void swapMaxMin(SqList *&L) 
{
    ElemType max1=0,min1=0,max2=0,min2=0;
    int i;
    for(i=0;i<=L->length-i;i++)
    {
        if(L->data[i]>L->data[max1]) max1=i;                          
        else if(L->data[i]<L->data[min1]) min1=i;                      //从序号小的检查 
        if(L->data[L->length-i-1]>L->data[max2]) max2=L->length-i-1;     
        else if(L->data[L->length-i-1]<L->data[min2]) min2=L->length-i-1;//从序号大的检查
    }
    if(L->data[max2]>L->data[max1]) max1=max2;                         // 求最大 
    if(L->data[min2]<L->data[min1]) min1=min2;                         // 求最小 
    swap(L->data[max1],L->data[min1]);    
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我明白了。对于你的问题,我会尽力答复。以下是基于分治法思路,采用二分策略,设计求线性表最大值最小值的算法: 1. 将给定的n个整数按照等距离的方式分成两个子线性表A和B,即A={a1, a2, ..., ak},B={bk+1, bk+2, ..., bn},其中k=n/2。 2. 对子线性表A和B分别递归执行求最大值最小值的算法,得到它们的最大值最小值。 3. 比较子线性表A的最大值与子线性表B的最大值,取其中的较大值为线性表最大值。 4. 比较子线性表A的最小值与子线性表B的最小值,取其中的较小值为线性表最小值。 5. 返回线性表最大值最小值。 下面是相应的测试程序,供你参考: ```python def max_min(array, low, high): # 当线性表只有一个元素时,直接返回 if low == high: return array[low], array[low] # 当线性表有两个元素时,比较后直接返回 if low + 1 == high: max_val = max(array[low], array[high]) min_val = min(array[low], array[high]) return max_val, min_val # 将线性表分成两个子线性表 mid = (low + high) // 2 max1, min1 = max_min(array, low, mid) max2, min2 = max_min(array, mid + 1, high) # 比较得到最大值最小值 max_val = max(max1, max2) min_val = min(min1, min2) return max_val, min_val # 测试程序 if __name__ == '__main__': array = [3, 5, 6, 2, 8, 1, 9, 7] max_num, min_num = max_min(array, 0, len(array) - 1) print("The max number is: ", max_num) print("The min number is: ", min_num) ``` 希望我的回答能够帮助到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值