php数据结构课程---6、常见排序有哪些
php数据结构课程---6、常见排序有哪些
一、总结
一句话总结:
冒泡排序(Bubble sort):依次交换
选择排序 ( Selection Sort ):在未排序序列中找到最小(大)元素,依次存放到已排序序列中
插入排序(Insertion sort):将未排序数据插入到已排序的序列之中
快速排序 ( Quick sort ):分治:简单写法:用数组
1、排序算法的稳定性是什么?
稳定的话:就是相同值,该在前,还是在前
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,Ai=Aj,且Ai在Aj之前,而在排序后的序列中,Ai仍在Aj之前,则称这种排序算法是稳定的;否则称为不稳定的。
2、快排的简便写法?
用数组:那空间换时间:将比基数小的扔进一个数组,将比基数大的扔进另外一个数组
3、将算法代码书写变的简单的思路(比如简便写快排)?
用数组:用数组存储中间变量,简化代码书写的复杂度
二、内容在总结中
<?php
class Sort{
//冒泡排序(Bubble sort):依次交换
public static function bubble($arr){
$size = count($arr);
for ($i=0; $i < $size ; $i++) {
//第一次肯定把最大的移到最后,所以$j<$size-1-$i
for ($j=0; $j < $size-1-$i ; $j++) {
if($arr[$j]>$arr[$j+1]){
$tmp = $arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
return $arr;
}
//选择排序 ( Selection Sort ):在未排序序列中找到最小(大)元素,依次存放到已排序序列中
public static function select($array){
$count=count($array);
for($i=0;$i<$count-1;$i++){
/*findtheminest*/
$min=$i;
// echo'$min-->'.$array[$min].'-->';
for($j=$i+1;$j<$count;$j++){
//由小到大排列
if($array[$min]>$array[$j]){
//表明当前最小的还比当前的元素大
$min=$j;
//赋值新的最小的
}
}
// echo$array[$min].'coco<br/>';
/*swap$array[$i]and$array[$min]即将当前内循环的最小元素放在$i位置上*/
if($min!=$i){
$temp=$array[$min];
$array[$min]=$array[$i];
$array[$i]=$temp;
}
}
return $array;
}
//插入排序(Insertion sort):将未排序数据插入到已排序的序列之中
public static function insert($arr){
$size = count($arr);
for ($i=0; $i <$size-1 ; $i++) {
for ($j=$i+1; $j >0 ; $j--) {
if($arr[$j]<$arr[$j-1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j-1];
$arr[$j-1]=$tmp;
}
}
}
return $arr;
}
//快速排序 ( Quick sort ):分治:简单写法:用数组
public static function quick($arr){
if(count($arr)<=1){
return $arr;
}
$k=$arr[0];
$x=array();
$y=array();
$_size=count($arr);
for($i=1;$i<$_size;$i++){
if($arr[$i]<=$k){
$x[]=$arr[$i];
}elseif($arr[$i]>$k){
$y[]=$arr[$i];
}
}
$x=Sort::quick($x);
$y=Sort::quick($y);
return array_merge($x,array($k),$y);
}
}
$arr = [9,4,6,8,17,12,44,12,56,71,21,19,81,99];
echo "<pre>";
// print_r(Sort::bubble($arr));
// print_r(Sort::select($arr));
// print_r(Sort::insert($arr));
// print_r(Sort::quick($arr));
php数据结构课程---6、常见排序有哪些的更多相关文章
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- python——常见排序算法解析
算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...
- 在Object-C中学习数据结构与算法之排序算法
笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...
- 常见排序算法总结 -- java实现
常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
- php数据结构课程---1、数据结构基础介绍(程序是什么)
php数据结构课程---1.数据结构基础介绍(程序是什么) 一.总结 一句话总结: 程序=数据结构+算法 设计好数据结构,程序就等于成功了一半. 数据结构是程序设计的基石. 1.数据的逻辑结构和物理结 ...
- python 数据结构与算法之排序(冒泡,选择,插入)
目录 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 数据结构与算法: 算法: 数据结构 冒泡排序法 选择排序法 插入排序法 数据结构与算法之排序(冒泡,选择,插入) 为什么学习 ...
- php数据结构课程---5、树(树的 存储方式 有哪些)
php数据结构课程---5.树(树的 存储方式 有哪些) 一.总结 一句话总结: 双亲表示法:data parent:$tree[1] = ["B",0]; 孩子表示法:data ...
- 常见排序算法原理及JS代码实现
目录 数组 sort() 方法 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快速排序 创建时间:2020-08-07 本文只是将作者学习的过程以及算法理解进行简单的分享,提供多一个角度的 ...
随机推荐
- 春节跳槽最新Java面试题及答案整理
今天大部分码农同学已经上班了吧,最近也是跳槽人才流动的高峰期,拿了年终奖,找找更好的机会. 小编也面了几家公司了,回来整理下面经分享给大家做个参考.有很多,暂时先分享20道,后续更多会陆续整理分享出来 ...
- vue 报错:Cannot read property '__ob__' of undefined
我的原因:引入组件后未注册 <script> import ComFirst from "../../components/ComFirst.vue" import C ...
- SpringCloud学习笔记《---06 Config 分布式配置中心---》基础篇
- Apache Forbidden 403错误提示
在配置Linux的 Apache服务时,经常会遇到http403错误,我今天配置测试时也出现了,最后解决了,总结了一下.http 403错误是拒绝访问的意思,有很多原因的.还有,这些问题在win平台的 ...
- JS对象 字符串分割 split() 方法将字符串分割为字符串数组,并返回此数组。 语法: stringObject.split(separator,limit)
字符串分割split() 知识讲解: split() 方法将字符串分割为字符串数组,并返回此数组. 语法: stringObject.split(separator,limit) 参数说明: 注意:如 ...
- window.onload=function(){};
window.onload=function(){}; 只要页面加载完毕,这个事件才会触发 扩展事件--页面关闭后才触发的事件 window.onunload=function(){}; 扩展事件-- ...
- 校园商铺-4店铺注册功能模块-6店铺注册之Controller层的实现
1. 从request请求获取获取相关的值 HttpservletRequest request代表的是客户端的请求.当客户端通过http协议访问服务器的时候,http请求头中的所有信息,都封装在这个 ...
- 阿里云发布新版SaaS上云工具包,全面助力SaaS上云
9月26日,在云栖大会SaaS加速器专场上,阿里云发布了新版的SaaS上云工具包(SaaS Launch Kit),发布了API网关的新功能,以及推出了全新升级的能力中心. SaaS上云工具包,顾名思 ...
- PHP面向对象之继承的基本思想
图例 概念和说明 代码展示 <?php header('content-type:text/html;charset=utf-8'); //学生考试系统 class Student{ publi ...
- PAT甲级——A1113 Integer Set Partition
Given a set of N (>) positive integers, you are supposed to partition them into two disjoint sets ...