博客
关于我
php 常用常见算法 (冒泡,选择,插入 ...TBD)
阅读量:398 次
发布时间:2019-03-05

本文共 1469 字,大约阅读时间需要 4 分钟。

选择排序:

基本思想: 每一趟从待排序的数据元素中选择一个最值作为首元素

$arr = array(3, 1, 4, 7);function selection_sort($arr){	// 外层循环的轮数	for ($i = 0, $len = count($arr); $i < $len - 1; $i++)	{		for ($j = $i + 1; $j < $len; $j++)		{			// 伪代码: 交换两个位置的元素			swap($i, $j);		}	}	return $arr;}

选择排序改进:

$arr = array(3, 1, 4, 7);function advanced_selection_sort($arr){	for ($i = 0, $len = count($arr); $i < $len - 1; $i++)	{		$min = $i; // $min 中存放的将是最值(本例是最小值)下标		for ($j = $i + 1; $j < $len; $j++)		{			if ($arr[$j] < $arr[$min])			{				$min = $j;			}		}		// 进行交换,如果 $min 发生变化,则交换		if($min != $i)		{			// 伪代码实现			swap($arr[$min], $arr[$i]);		}	}	return $arr;}

冒泡排序:

基本思想: 对相邻的元素进行两两比较,根据需要交换,每一趟将一个最值"浮动"到顶端,最终完成排序。

$arr = array(3, 1, 4, 7);function bubble_sor($arr){	for ($i = 0, $len = count($arr); $i < $len - 1; $i++)	{		$flag = true; // 如果有一轮排序中,没有发生交换,则元素已经是正确的顺序,排序结束。		for ($j = 0; $j < $len -1 - i; $j++)		{			// 伪代码实现			swap($arr[$j], $arr[$j + 1]);			flag = false;		}		if (flag)		{			break;		}	} }

插入排序:

在这里插入图片描述
假定手上的牌是已经排好序的,将每次取到的牌插入合适的位置。只是在程序中,需要为每次待插入的牌挪出一个位置
动画演示:
在这里插入图片描述
图片来源:

#define LEN 5int a[LEN] = {1, 5, 4, 2, 3};void insertion_sort(void){	int i, j, key;	// 从 1 到 LEN 每次取一张牌	for(j = 1; j < LEN; j++)	{		printf("%d, %d, %d, %d, %d\n", a[0], a[1], a[2], a[3], a[4]);		key = a[j];		i = j - 1;		// 将已有的牌排好序		while(i >= 0 && a[i] > key)		{			a[i + 1] = a[i];			i--;		}		// 将取到牌插入		a[i + 1] = key;	}	printf("%d, %d, %d, %d, %d\n", a[0], a[1], a[2], a[3], a[4]);}int main(void){	insertion_sort();	return 0;}

转载地址:http://bjuzz.baihongyu.com/

你可能感兴趣的文章
M_Map工具箱简介及地理图形绘制
查看>>
m_Orchestrate learning system---二十二、html代码如何变的容易
查看>>
M×N 形状 numpy.ndarray 的滑动窗口
查看>>
m个苹果放入n个盘子问题
查看>>
n = 3 , while n , continue
查看>>
n 叉树后序遍历转换为链表问题的深入探讨
查看>>
N!
查看>>
N-Gram的基本原理
查看>>
n1 c语言程序,全国青少年软件编程等级考试C语言经典程序题10道七
查看>>
Nacos Client常用配置
查看>>
nacos config
查看>>
Nacos Config--服务配置
查看>>
Nacos Derby 远程命令执行漏洞(QVD-2024-26473)
查看>>
Nacos 与 Eureka、Zookeeper 和 Consul 等其他注册中心的区别
查看>>
Nacos 单机集群搭建及常用生产环境配置 | Spring Cloud 3
查看>>
Nacos 启动报错[db-load-error]load jdbc.properties error
查看>>
Nacos 报Statement cancelled due to timeout or client request
查看>>
Nacos 注册服务源码分析
查看>>
Nacos 融合 Spring Cloud,成为注册配置中心
查看>>
Nacos-注册中心
查看>>