选择排序的php实现 Selection Sort
选择排序Selection Sort的PHP实现,安全按照算法所写。
同一排序算法下,需要趟数最多的数列是什么数列呢?思考中。
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
01
function out_arr($arr) {
02
return implode(', ', $arr).'
03
';
04
}
05 06
function sort_selection($arr) {
07
for ($i = 0; $i < count($arr) - 1; $i++ ) {
08
$min_index = $i;
09
for($j = $i+1; $j < count($arr); $j++ ) {
10
if( $arr[$j] < $arr[$min_index] ) {
11
$min_index = $j;
12
}
13
}
14
if( $min_index != $i ) {
15
$tmp = $arr[$min_index];
16
$arr[$min_index] = $arr[$i];
17
$arr[$i] = $tmp;
18
}
19
echo sprintf('=', $i).' : '.out_arr($arr);
20
}
21
}
22 23 24 25 26
echo '<pre>';
27
$arr = range(20, 1);
28
shuffle($arr);
29
echo 'ORG : '.out_arr($arr);
30
sort_selection($arr);
31
echo '</pre>';
选择排序的php实现 Selection Sort的更多相关文章
- 选择排序(2)——堆排序(heap sort)
		
前期概念: 二叉树 完全二叉树 左序遍历 中序遍历 右序遍历 堆 小根堆 大根堆 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种.可以利用数组的特点 ...
 - 【排序基础】1、选择排序法 - Selection Sort
		
文章目录 选择排序法 - Selection Sort 为什么要学习O(n^2)的排序算法? 选择排序算法思想 操作:选择排序代码实现 选择排序法 - Selection Sort 简单记录-bobo ...
 - C语言利用指针排序与选择排序算法
		
//读入字符串,并排序字符串 #include <stdio.h> #include <string.h> #define SIZE 81 #define LIM 20 #de ...
 - 算法:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)和选择排序(Selection Sort)总结
		
背景 这两天温习了 5 中排序算法,之前也都看过它们的实现,因为没有深入分析的缘故,一直记不住谁是谁,本文就记录一下我学习的一些心得. 三种排序算法可以总结为如下: 都将数组分为已排序部分和未排序部分 ...
 - JAVA简单选择排序算法原理及实现
		
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...
 - 选择排序法-java详解案例
		
/** * 功能:选择排序法 * 思想:第一次从R[0]-R[N-1]中选取最小值,与R[0]交换,第二次从R[1]-R[N-1]中选取最小值,与R[1]交换, * 第三次从R[2]-R[N-1]中 ...
 - Java 快速排序法 冒泡排序法 选择排序法 插入排序法
		
1.快速排序的原理: 选择一个关键值作为基准值.比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的). 从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果 ...
 - 冒泡排序&&选择排序 以及时间效率对比
		
package com.test4; import java.util.*; //Calendar 显示时间 /** * @author qingfeng * 功能:冒泡排序 */ public cl ...
 - [算法] 选择排序 Selection sort
		
选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然 ...
 
随机推荐
- 六百字读懂 Git(转)
			
add by zhj:还是原文 六百字读懂 Git 看着更舒服一些,显示更好 原文:六百字读懂 Git 英文原文:Git in 600 words 译注:来自 Hacker School 的 Mary ...
 - Binary Search in Java
			
关于折半查找中的几个注意点. Version 1: public static <T extends Comparable<? super T>> int binSearch( ...
 - TCP协议的三次握手和四次挥手机制
			
核心知识点: 1.三次握手:seq和ack number 2.四次挥手:FIN和随机数 一.TCP/IP协议 TCP/IP协议(Transmission control protool/Interne ...
 - Python 开发者节省时间的 10 个小技巧
			
Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ...
 - PAT 天梯赛 L1-039. 古风排版 【字符串处理】
			
题目链接 https://www.patest.cn/contests/gplt/L1-039 思路 先根据 len 和 n 判断 有几个 列和几行,然后 从最右边 到 最左边 从上到下 将字符串 录 ...
 - 【转】Linux下查看进程打开的文件句柄数
			
---查看系统默认的最大文件句柄数,系统默认是1024 # ulimit -n 1024 ----查看当前进程打开了多少句柄数 # lsof -n|awk '{print $2}'|sort|uniq ...
 - DataTable Group By或运算  Linq Aggregate的使用
			
class Program { static void Main(string[] args) { DataTable dt = new DataTable(); dt.Columns.Add(&qu ...
 - qt的udp的初步使用(转)
			
该程序实现的功能是:局域网内,每个用户登录到聊天软件,则软件界面的右端可以显示在线用户列表,分别显示的是用户名,主机名,ip地址.软件左边那大块是聊天内容显示界面,这里局域网相当于qq中的qq群,即群 ...
 - ggplot2学习总结
 - JSP笔记04——架构(转)
			
原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm Web服务器需要一个JSP引擎,即一个处理JSP页面的容 ...