蓝桥杯国赛备赛复习——基础算法

一、排序

1.1 快速排序

java 复制代码
package 排序;

import java.util.Scanner;

public class 快速排序 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int []a = new int[110];
		int n = scan.nextInt();
		for(int i=0;i<n;i++)
			a[i] = scan.nextInt();
		Q_sort(a,0,n-1);
		for(int i=0;i<n;i++)
			System.out.print(a[i]+" ");
	}
	static void Q_sort(int a[],int l,int r) {
		if(l>=r) return;
		int x = a[l];
		int i = l - 1;
		int j = r + 1;
		while(i<j) {
			do i++; while(a[i]<x);
			do j--; while(a[j]>x);
			if(i<j) {
				int t = a[i];
				a[i] = a[j];
				a[j] = t;
			}
		}
		Q_sort(a,l,j);
		Q_sort(a,j+1,r);
	}
}

1.2 归并排序

java 复制代码
package 排序;
import java.util.*;
public class 归并排序 {
	static int []tmp = new int[110];	//辅助数组
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int []a = new int[110];
		int n = scan.nextInt();
		for(int i=0;i<n;i++)
			a[i] = scan.nextInt();
		Merge_sort(a,0,n-1);
		for(int i=0;i<n;i++)
			System.out.print(a[i]+" ");
	}
	static void Merge_sort(int []a,int l,int r) {
		// 递归退出条件
		if(l>=r)	return;
		// 分
		int mid =  l + r >> 1;
		Merge_sort(a,l,mid);
		Merge_sort(a,mid+1,r);
		// 合
		int ans=0,x=l,y=mid+1;
		while(x<=mid&&y<=r)
			if(a[x]<=a[y])	tmp[ans++] = a[x++];
			else  tmp[ans++] = a[y++];
		while(x<=mid) tmp[ans++] = a[x++];
		while(y<=r) tmp[ans++] = a[y++];
		for(int i=l,pos=0;i<=r;i++) a[i] = tmp[pos++];
	}
}

二、二分

2.1 整数二分

java 复制代码
package 二分;
import java.util.*;
public class 整数二分 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 模板1
		int l = 1,r = 1,mid;
		while(l<r) {
			mid = (l+r)/2;
			if(check(mid)) r = mid;
			else l = mid+1;
		}
		// 模板1
		while(l<r) {
			mid = (l+r+1)/2;
			if(check(mid)) l = mid;
			else r = mid-1;
		}
	}
	static boolean check(int x) {
		return true;
	}
}

2.2 浮点二分

java 复制代码
package 二分;

public class 浮点二分___平方根 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x =4;
		double l = 0,r = x;
		while((r-l) > 1e-8) {
			double mid = (l+r)/2;
			if(mid*mid>=x) r = mid;
			else l = mid;
		}
		System.out.print(l);
	}
}
相关推荐
阳明山水2 分钟前
销量预测2025—2026:技术演进、实证发现与系统架构的系统性综述
人工智能·深度学习·算法·机器学习·架构
伯远医学5 分钟前
RIP-seq 高分文献案例分享
java·前端·javascript·人工智能·算法·eclipse·html
啊嘞嘞?38 分钟前
力扣(LRU缓存)
算法·leetcode
珂朵莉MM40 分钟前
2026国信杯具身智能创新大赛-编程技能赛--本科组国赛解题报告 | 珂学家
算法·深度优先·图论
啊嘞嘞?41 分钟前
力扣(下一个排列)
算法·leetcode
李可以量化1 小时前
Redis Client 从入门到精通(一)下:redis-py 核心数据结构操作与连接管理
数据结构·redis·python·bootstrap·量化交易·qmt
疯狂打码的少年1 小时前
【数据结构】复习日:树 + 图 + 排序(整理对比表)
数据结构·笔记·算法
benchmark_cc1 小时前
Claude Code + MCP + QuantDash:打造全自动量化研究流水线的终极指南
人工智能·后端·爬虫·算法·claude·mcp·quantdash
星星.7222 小时前
2026河南萌新联赛第六场(郑州大学)补题B、D、L、J、I
数据结构·c++·算法
朝发如雪2 小时前
快速掌握Linux(2)(时间相关函数)(文件IO)
linux·python·算法