当前位置:   article > 正文

acwing 算法基础课学习-1_acwing算法基础课百度云盘

acwing算法基础课百度云盘

快排算法

#include<iostream>
using namespace std;
void quick_sort(int l,int r,int q[]) //l,r分别为左边界和右边界
{
	int i = l - 1;//因为接下来l和r会进行++和--,如果不这么做数组会越界
	int j = r + 1;
	int x = q[(l+r)/2] //x是标志值,可以选最左端也可以选最右端,也可以选中间,印象中408的2019年选择题好像考察过这个内容,有时间会贴出来
	while(i < j)
	{
		do i++;while(q[i] < x);
		do j--;while(q[j] > x);
		if(i < j) swap(q[i],q[j]);
		
	}
	quick_sort(l,j,q);
	quick_sort(j+1,r,q);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

归并算法

int N = 1e6;
int a[N],temp[N]//原数组和临时存放的数组
merge__sort(int l,int r,int q[])
{
	if(l >= r)
	return;
	int mid = l+r >>1;
	merge_sort(l,mid,q[]);
	merge_sort(mid + 1,r,q[]);
	int i = l;
	int j = mid + 1;
	int k = 0;
	while(i <= mid && j <= r)
	{
		if(q[i]<=q[j])
		temp[k++] = q[i++];
		else
		temp[k++] = q[j++];
		if(i <= mid)
		temp[k++] = q[i++];
		else if(j <= r)
		temp[k++] = q[j++];
		for(i = l,j =0;i < r;i++,j++)
		q[i] = temp[j++];
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

找出第k小的数(利用快排算法的思想)


法一:直接快排得到数组,再遍历一边(....暴力解,408大题应该扣两分)
法二:
#include<iostream>
using namespace std;
const int N = 100010;
int q[N];
int quick_sort(int l, int r,int k)//这里因为要处理的元素是k,所以将k作为参数
{
	if(l == r)
	return q[l]; //先判断递归终止条件,跳出递归
	int i  = l - 1;
	int j = r + 1;
	int x = q[(l+r)/2]
	while(i < j)
	{
		do i++;while(q[i] < x);
		do j--;while(q[j] > x);
		if(i < j) swap(q[i],q[j]);
		}
		int s1 = j - l + 1;//判断当前小于当前标志元素的元素有几个
		if(s1 < k)
		return quick(j + 1,r,k - s1);//如果当前个数小于k个,要在标志元素的右边再找(k-s1)个
		else
		return quick(l,j,k);
	
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/1021244
推荐阅读
相关标签
  

闽ICP备14008679号