冒泡排序|插入排序
Posted yanweifeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序|插入排序相关的知识,希望对你有一定的参考价值。
冒泡排序|插入排序
标签(空格分隔): 数据结构和算法
冒泡排序
冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作
$array = [1, 2, 10, 11, 90, 8, 4, 88, 100];
$count = count($array);
for ($i = 0; $i < $count; $i++) {
// 提前退出冒泡循环的标志位
$flag = false;
for ($j = $i; $j < $count; $j++) {
if ($array[$j] > $array[$i]) {
$tmp = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $tmp;
$flag = true;
}
}
if (!$flag) break;
}
插入排序
首先,我们将数组中的数据分为两个区间,**已排序区间**和**未排序区间**。初始已排序区间只有一个元素,就是数组的第一个元素。*插入算法的核心思想是取未排序区间中的元素,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间数据一直有序*。重复这个过程,直到未排序区间中元素为空,算法结束
$array = [1, 2, 10, 11, 90, 8, 4, 88, 100];
$count = count($array);
for ($i = 1; $i < $count; $i++) {
$tmp = $array[$i];
for ($j = $i - 1; $j>-1; $j--) {
if ($array[$j] > $tmp) {
$array[$j+1] = $array[$j];
} else {
$array[$j+1] = $tmp;
break;
}
}
}
对比
以上是关于冒泡排序|插入排序的主要内容,如果未能解决你的问题,请参考以下文章
排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)
[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)
直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚