四、分治算法

1、求一组数据中最大的两个数

#include<stdio.h>
#define N 100001
int n;
int a[N];
void qs(int arr[], int low, int high) {
	if(low<high){
		int p=arr[high];
		int i=low-1;
		for(int j=low;j<high;j++){
			if(arr[j]<p){
				i++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
			}
		}
        int temp = arr[i + 1];
        arr[i + 1] = arr[high];
        arr[high] = temp;
        
        int pinext = i + 1;

        qs(arr, low, pinext - 1);
        qs(arr, pinext + 1, high);
	}
}
int main(){
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        scanf("%d", &a[i]);

    qs(a, 1, n);

    printf("max1=%d max2=%d\n", a[n], a[n - 1]);
    printf("min1=%d min2=%d\n", a[1], a[2]);
    return 0;
}

2、求一组数据的和

#include "stdio.h"

/**********  Begin  **********/
int n,ans;
int main()
{
 	scanf("%d",&n);
    for(int i=1;i<=n;i++){
        int numn;scanf("%d",&numn);
        ans+=numn;
    }
    printf("分治法求出数组元素的和为:%d",ans);
    return 0;
}
/**********  End  **********/

3、找出数组中第 k 个小的元素

#include<stdio.h>
#define N 100001
int n,m;
int a[N];
void qs(int arr[], int low, int high) {
	if(low<high){
		int p=arr[high];
		int i=low-1;
		for(int j=low;j<high;j++){
			if(arr[j]<p){
				i++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
			}
		}
        int temp = arr[i + 1];
        arr[i + 1] = arr[high];
        arr[high] = temp;
        
        int pinext = i + 1;

        qs(arr, low, pinext - 1);
        qs(arr, pinext + 1, high);
	}
}
int main(){
    scanf("%d %d", &n,&m);
    for (int i = 1; i <= n; i++)
        scanf("%d", &a[i]);

    qs(a, 1, n);

    printf("第%d小的元素是%d",m,a[m]);
    return 0;
}

相关推荐

  1. 分治算法

    2024-03-29 14:26:01       19 阅读
  2. 分治-算法

    2024-03-29 14:26:01       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 14:26:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 14:26:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 14:26:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 14:26:01       18 阅读

热门阅读

  1. 2024蓝桥杯每日一题(背包)

    2024-03-29 14:26:01       21 阅读
  2. Vue3 实现基于token 用户登录

    2024-03-29 14:26:01       18 阅读
  3. 前端Vue开发技术总结

    2024-03-29 14:26:01       20 阅读
  4. day72Html

    day72Html

    2024-03-29 14:26:01      25 阅读
  5. 微信小程序监听用户经纬度变化

    2024-03-29 14:26:01       17 阅读
  6. 2024.3.25 ARM

    2024-03-29 14:26:01       18 阅读
  7. ArcGis Pro Python工具箱教程 03 工具箱中工具自定义

    2024-03-29 14:26:01       18 阅读
  8. silk-v3-decoder将sil转为mp3

    2024-03-29 14:26:01       29 阅读