Problem  L 求m到n之和 C语言函数

题目描述
本题要求实现一个计算m~n(m<
n)之间所有整数的和的简单函数。
函数接口定义:
int sum( int m, int n );

判测试程序样例:

#include <stdio.h>

int sum(int m, int n);

int main()
{    
    int m, n;

    scanf("%d %d", &m, &n);
    printf("sum = %d\n", sum(m, n));

    return 0;
}

/* 你的代码将被嵌在这里 */

样例输入
1 5
样例输出
15

分析
主函数题目中都已经给出了,那这题还需要做什么(╯‵□′)╯︵┻━┻

#include <stdio.h>
int sum(int n,int m);

int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    printf("%d\n",sum(n,m));
    return 0;
}

int sum(int n,int m)                //累加求和
{
    int i,sum=0;
    for(i = n;i <= m;i++)
    {
        sum += i;
    }
    return sum;
}
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
的代码,要时间复杂度在最坏情况下为O(n)。 好的,我将扮演ChitGPT,为您回答这个问题。首先,我们可以用快速选择算法来解决这个问题,这个算法的时间复杂度在最坏情况下为O(n)。下面是使用c语言编写该算法的代码: ```c #include <stdio.h> int quick_select(int arr[], int left, int right, int k){ if(left == right) return arr[left]; int pivot_index = left + rand() % (right - left + 1); pivot_index = partition(arr, left, right, pivot_index); if(k == pivot_index) return arr[k]; else if(k < pivot_index) return quick_select(arr, left, pivot_index - 1, k); else return quick_select(arr, pivot_index + 1, right, k); } int partition(int arr[], int left, int right, int pivot_index){ int pivot_value = arr[pivot_index]; swap(&arr[pivot_index], &arr[right]); // 把 pivot 移到最右端 int store_index = left; for(int i = left; i < right; i++){ if(arr[i] < pivot_value){ swap(&arr[i], &arr[store_index]); store_index++; } } swap(&arr[store_index], &arr[right]); // 把 pivot 移回去 return store_index; } // 交换两个数的值 void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp; } int main(){ int arr[] = {3, 5, 2, 7, 4}; int n = sizeof(arr) / sizeof(int); int k = 2; int result = quick_select(arr, 0, n - 1, k - 1); printf("The %dth smallest element is %d.\n", k, result); return 0; } ``` 在这段代码中,我们定义了一个快速选择函数quick\_select,它接受一个整数数组、左右两个索引和一个整数k作为参数。它使用了partition函数来将数组分割成两部分,并确定pivot索引。如果k等于pivot索引,则找到了第k小的元素;否则,我们继续对分割后的子数组进行递归调用。 partition函数使用两个指针(store\_index和i)来扫描数组,并将小于pivot值的元素移动到左边,大于pivot值的元素移动到右边。最后,它将pivot值移回数组,以便快速选择函数能够正确找到第k小的元素。 在我的回答中我没有漏掉用到的变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值