算法学习01:排序&&二分

算法学习01:排序&&二分



前言

在这里插入图片描述

需要记忆的模版:

快速排序

void quick_sort(int q[], int l, int r)
{
	if(l >= r) return;
	
	int x = q[l]; i = l - 1; j = r + 1; 
	while(l < r) {
		do i++; while(q[i] < x);//注意1:do_while至少执行一次 
		do j--; while(q[j] > x);//直到不满足条件才出来 
	}
	quick_sort(q, l, j);
	quick_sort(q, j + 1, r);	
}

归并排序:

void merge_sort(int q[] , int l, int r)
{
	if(l >= r) return;
	
	int mid = l + r >> 2;
	merge_sort(q, l, mid);
	merge_sort(q, mid + 1, r);
	
	int k = 0, i = l, j = mid + 1;
	while(i <= mid && j <= r) 
		if(q[i] <= q[j]) temp[k ++ ] = q[i ++ ];
		else temp[k ++ ] = q[j ++ ];
	while(i <= mid) temp[k ++ ] = q[i ++ ];//注意1:考虑有多有少的情况 
	while(j <= r) temp[k ++ ] = q[j ++ ];
	
	//注意2:将temp数组复制到原数组q 
	for(int i = l, j = 0; i <= r; i++, j++) q[i] = temp[j];	
 } 

整数二分:

int l = 0, r = n - 1; 
while(l < r)
{
	int	mid = (l + r) / 2;
	if(q[mid] >= x) r = mid;//右边 
	else l = mid + 1;
}

while(l < r)
{
	int mid = (l + r + 1) / 2;//注意:需要+1
	if(q[mid] <= x) l = mid;//左边
	else r = mid - 1;
}

浮点数二分

double l = 0, r = x;
while(r - 1 > le-8)//注意1:精度问题 
{
	double mid = (l + r) / 2;
	if(mid * mid >= x) r = mid;
	else l = mid;//注意不是mid + 1
 } 

提示:以下是本篇文章正文内容:

一、排序

1.快速排序

在这里插入图片描述



2.归并排序:

在这里插入图片描述



二、二分

1.整数

在这里插入图片描述



2.浮点数


总结

提示:这里对文章进行总结:
记忆模版!!!

相关推荐

  1. 算法.1-三大排序算法-对数器-

    2024-03-09 23:00:05       42 阅读
  2. 算法| ss

    2024-03-09 23:00:05       34 阅读
  3. 算法-

    2024-03-09 23:00:05       31 阅读
  4. 算法·

    2024-03-09 23:00:05       19 阅读
  5. day01 ,移除元素

    2024-03-09 23:00:05       67 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-09 23:00:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-09 23:00:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-09 23:00:05       82 阅读
  4. Python语言-面向对象

    2024-03-09 23:00:05       91 阅读

热门阅读

  1. iOS OC与Swift文件相互调用

    2024-03-09 23:00:05       61 阅读
  2. angular17+ionic7集成开发

    2024-03-09 23:00:05       40 阅读
  3. 【AIGC调研系列】Claude 3调研分析

    2024-03-09 23:00:05       53 阅读
  4. k8s存储

    k8s存储

    2024-03-09 23:00:05      41 阅读
  5. Git 开源的版本控制系统-04-branch manage 分支管理

    2024-03-09 23:00:05       51 阅读
  6. Mac笔记本聚焦SpotLight占用内存太高的 解法

    2024-03-09 23:00:05       48 阅读
  7. C语言实现学生信息管理系统源码(v0.0.1)

    2024-03-09 23:00:05       44 阅读