洛谷 P1177 【模板】快速排序

news/2024/5/19 21:47:54 标签: c语言, 快速排序

 

 

 第一遍时间超限

#include<stdio.h>
int a[100010];

void Quick_Sort(int left,int right)
{
    if(left>=right)
	{
		return;
	}
	int f=a[left];
	int l=left,r=right;
	
	while(l!=r)
	{
		while(a[r]>=f&&l<r)  r--;
		while(a[l]<=f&&l<r)  l++;
		int t=a[l];
		a[l]=a[r];
		a[r]=t;
	} 
	a[left]=a[l];
	a[l]=f;
	Quick_Sort(left,l-1);
	Quick_Sort(l+1,right);
}

int main()
{
	int N;
	scanf("%d",&N);
	
	for(int i=1;i<=N;i++)
	{
		scanf("%d",&a[i]);
	}
	
	Quick_Sort(1,N);
	
	for(int i=1;i<=N-1;i++)
	{
		printf("%d ",a[i]);
	}
	printf("%d\n",a[N]);
	
	return 0;
}

第二遍过了

#include<stdio.h>
int a[100010];

void Quick_Sort(int left,int right)
{
    if(left>=right)
	{
		return;
	}
	int num=a[(left+right)/2];
	int l=left,r=right;
	
	do
	{
		while(a[r]>num) r--;
		while(a[l]<num) l++;
		if(r>=l)
		{
			int t=a[r];
			a[r]=a[l];
			a[l]=t;
			r--,l++;
		}
	}while(l<=r);
	if(left<r)  Quick_Sort(left,r);
	if(l<right)  Quick_Sort(l,right);
}

int main()
{
	int N;
	scanf("%d",&N);
	
	for(int i=1;i<=N;i++)
	{
		scanf("%d",&a[i]);
	}
	
	Quick_Sort(1,N);
	
	for(int i=1;i<=N-1;i++)
	{
		printf("%d ",a[i]);
	}
	printf("%d\n",a[N]);
	
	return 0;
}

 


http://www.niftyadmin.cn/n/1619408.html

相关文章

547. 朋友圈(DFS)

547. 朋友圈题目解题思路代码题目 班上有 N 名学生。其中有些人是朋友&#xff0c;有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友&#xff0c;B 是 C 的朋友&#xff0c;那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈&#xff0c;是指所有朋友的集合。 给定…

洛谷 P1551 亲戚

本质还是并查集&#xff0c;模板套用一下就可以了&#xff0c;挺简单 #include<iostream> using namespace std;#define MAX_TREE_SIZE 10010 int parent[MAX_TREE_SIZE]{0};//创建一个结点数组 int deep[MAX_TREE_SIZE]{0}; void initial(int n)//初始化 {for(int i0…

130. 被围绕的区域(DFS)

130. 被围绕的区域题目解题思路代码题目 给定一个二维的矩阵&#xff0c;包含 ‘X’ 和 ‘O’&#xff08;字母 O&#xff09;。 找到所有被 ‘X’ 围绕的区域&#xff0c;并将这些区域里所有的 ‘O’ 用 ‘X’ 填充 解题思路 可达性问题&#xff0c;用DFS。 这题主要思路…

417. 太平洋大西洋水流问题(DFS)

417. 太平洋大西洋水流问题题目解题思路代码题目 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界&#xff0c;而“大西洋”处于大陆的右边界和下边界。 规定水流只能按照上、下、左、右四个方向流动&#xff0c;且只能…

洛谷 P2078 朋友

思路是分为两个并查集&#xff0c;然后计算下男女人数&#xff0c;然后直接比较&#xff0c;选小的 代码写的有点麻烦好像&#xff0c;交上去也没过&#xff0c;虽然结果对了 其实第一遍已经发现有问题了&#xff0c;因为比较的时候不小心把小于号打成大于号&#xff0c;然后…

洛谷 P1455 搭配购买

还是并查集&#xff0c;n朵云&#xff0c;m个搭配&#xff0c;和手里的钱w&#xff0c;然后是每朵云的价钱和价值&#xff0c;再是云与云之间的搭配。 思路&#xff1a; 1.还是用combine函数把所有搭配连起来&#xff08;可能有分散的不知道多少个集合&#xff09; 2.增加的…

669. 修剪二叉搜索树(BST)

669. 修剪二叉搜索树题目解题思路代码题目 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构&#xff08;即&#xff0c;如果没有…

洛谷 P1111 修复公路

其实还是考查并查集&#xff0c;但是增加了一个问题&#xff0c;就是任意两个村庄都可通车的最短时间&#xff08;可以是多条公路连成一条道路&#xff09;&#xff0c;看输出结果这些公路大概是能同时修的&#xff0c;还是先套用并查集的模板先把输入的公路都连通&#xff0c;…