博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交换排序
阅读量:5134 次
发布时间:2019-06-13

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

基本思路:两两比较待排序记录的关键字,如果发现两个记录的次序相反就进行交换,直到所有记录都没有反序时为止。

 

两种交换排序算法:冒泡排序和快速排序

 

冒泡排序(Bubble Sort)的基本思路:通过相邻元素之间的比较和交换,使关键字最小的元素逐渐从底部移向顶部。每趟排序都将最小的元素,放在第一位,接着再在下一趟排序找到最小的记录,下一趟排序的比较次数少1次。

 

冒泡排序的时间复杂度是:n 的二次方

';echo "\r\n";function bubble($arr,$len){ $tmp = 0; for( $i = 1; $i<$len ; $i++){ // 只要进行len-1次排序,因为是用最后的元素和前一元素比较 $flag = 0 ; //标记剩余元素是否需要继续排序。 for( $j = $len - 1; $j >= $i; $j--){ if( $arr[$j] < $arr[$j-1] ){ $tmp = $arr[$j]; $arr[$j] = $arr[$j-1]; $arr[$j-1] = $tmp; $flag = 1; } } if( !$flag ) return; //如果该趟排序没有反序的元素,则排序结束。 } return $arr;}$arr = bubble($arr,$len);print_r($arr);echo "\r\n";function rbubble($arr,$n){ $tmp = 0; for( $i = 1; $i<$n; $i++){ for( $j = $n-1; $j >= $i; $j--){ if( $arr[$j] > $arr[$j-1] ){ $tmp = $arr[$j]; $arr[$j] = $arr[$j-1]; $arr[$j-1] = $tmp; } } } return $arr;}echo '降序排列==>';$arr = rbubble($arr,$len);print_r($arr);echo "\r\n";

双向冒泡排序:

echo '双向冒泡===>';function t_bubble($arr,$n){    $i = 1;    $j = 0;    $noswap = 1;    $tmp = 0;    while($noswap){  //每循环一次将最小值放在开头,将最大值放在开头。下次循环在剩余的值内找到最小值和最大值        $noswap = 0;        //自底向上比较        for( $j = $n-$i ; $j >= $i; $j--){            if( $arr[$j] < $arr[$j-1] ){                $tmp = $arr[$j];                $arr[$j] = $arr[$j-1];                $arr[$j-1] = $tmp;                $noswap = 1;            }        }        //自上向下比较        for( $j = $i ; $j < $n-$i;$j++){            if( $arr[$j] > $arr[$j+1] ){                $tmp = $arr[$j];                $arr[$j] = $arr[$j+1];                $arr[$j+1] = $tmp;                $noswap = 1;            }        }        $i++;    }    return $arr;}$arr = t_bubble($arr,$len);print_r($arr);echo "\r\n";

 

转载于:https://www.cnblogs.com/gelu/articles/6524298.html

你可能感兴趣的文章
UVA1276 Network
查看>>
安卓手势
查看>>
【Java并发编程一】线程安全问题
查看>>
jstl标签库基础教程及其使用代码
查看>>
中期蒙混过关,后期要早点起步4.13-4.19
查看>>
redisson笔记
查看>>
less 使用小结!笔记!
查看>>
安装阿里Java代码规约插件
查看>>
c语言运算优先级与结合方向的问题
查看>>
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "FileSize"
查看>>
html常用标签总结
查看>>
VMware ESXi 虚拟机硬盘格式:精简置备、厚置备延迟置零、厚置备置零
查看>>
洛谷 P2764(最小路径覆盖=节点数-最大匹配)
查看>>
iphone safari不支持position fixed的解决办法
查看>>
Mysql err 1055
查看>>
Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器 (转载)
查看>>
Python-装饰器
查看>>
代码静态检查工具PC-Lint运用实践
查看>>
dsu + lca
查看>>
软工网络15个人作业4——alpha阶段个人总结
查看>>