算法菜鸟的烂笔头
时间:2022-07-26
本文章向大家介绍算法菜鸟的烂笔头,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# 排序算法
# 冒泡排序
冒泡排序 |
平均 |
最好 |
最坏 |
辅助空间 |
稳定性 |
---|---|---|---|---|---|
时间复杂度 |
O(n^2) |
O(n) |
O(n^2) |
O(1) |
稳定 |
<?php
$arr = [5, 2, 9, 21, 2, 56, 34, 12, 90, 45];
$len = count($arr);
for($i = 0; $i < $len; $i++) {
for($j = 0; $j < $len - 1 - $i; $j++) {
if($arr[$j] > $arr[$j+1]) {
list($arr[$j+1], $arr[$j]) = [$arr[$j], $arr[$j+1]];
}
}
}
print_r($arr);
# 简单选择排序
简单选择排序 |
平均 |
最好 |
最坏 |
辅助空间 |
稳定性 |
---|---|---|---|---|---|
时间复杂度 |
O(n^2) |
O(n^2) |
O(n^2) |
O(1) |
不稳定 |
<?php
$arr = [5, 2, 9, 21, 2, 56, 34, 12, 90, 45];
$len = count($arr);
for($i = 0; $i < $len - 1; $i++) {
$min = $i;
for($j = $i + 1; $j < $len; $j++) {
if($arr[$j] < $arr[$min]) {
$min = $j;
}
}
if($min !== $i) {
list($arr[$min], $arr[$i]) = [$arr[$i], $arr[$min]];
}
}
print_r($arr);
# 直接插入排序
直接插入排序 |
平均 |
最好 |
最坏 |
辅助空间 |
稳定性 |
---|---|---|---|---|---|
时间复杂度 |
O(n^2) |
O(n) |
O(n^2) |
O(1) |
稳定 |
<?php
$arr = [5, 2, 9, 21, 2, 56, 34, 12, 90, 45];
$len = count($arr);
for($i = 0; $i < $len - 1; $i++) {
for($j = $i + 1; $j > 0; $j--) {
if($arr[$j] < $arr[$j - 1]) {
list($arr[$j], $arr[$j - 1]) = [$arr[$j - 1], $arr[$j]];
}
}
}
print_r($arr);
- 【网络编程系列】一:字节顺序的大端与小端表示法
- Linux下的make命令用法
- 增量数据丢失的原因分析(三)(r8笔记第91天)
- JS之浏览器对象BOM
- 超清晰的makefile解释、编写与示例
- 一个简单的sql审核案例 (r8笔记第90天)
- Linux wait() 和 waitpid()函数介绍
- #if和#ifdef的区别
- 一个MySQL优化案例的初步思路(r8笔记第87天)
- 一条直线上N个线段所覆盖的总长度
- Go 语言 数据库操作之插入数据实现
- (摘抄)GO语言中template的用法
- 大数据时代的技术hive:hive介绍
- hadoop2.6分布式部署时 livenodes等于1的原因
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- RabbitMQ入门教程
- 使用 Django + Vue.js 开发个人博客网站(完整版附源码)—— Python-课程设计-期末项目
- LVM添加硬盘并扩容至已有分区
- 新增项目时如何修改Jenkins
- 使用封锁协议解决事务的并发问题
- 命令小技巧总结
- Java 中 HashMap 数据结构分析(语言无关)
- Java8中日期的特性,别再用Date来处理日期啦~
- 数据库系统概论考试心得+复习指南
- Docker的基础知识和简单应用
- Spring 注解开发之 @ComponentScan
- 事务并发调度的可串行性及两段锁协议
- 面试不易,控场情况下,感觉少要了1万!
- Java 操作 ElasticSearch
- Docker部署常见应用