zoukankan      html  css  js  c++  java
  • 冒泡排序|插入排序

    冒泡排序|插入排序

    标签(空格分隔): 数据结构和算法

    冒泡排序

    冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 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;
            }
        }
    }
    

    对比

  • 相关阅读:
    Mvc3绑定下拉菜单
    M vc3+ExtJs 数据格式转换(泛型集合转换为Json类型)
    python代码小实践之dorm_lab_changeIP
    2013网易互联网暑假实习笔试&面试
    python代码小实践之split_csv
    python代码小实践之data_structure_and_algorithm
    位运算
    weibo_json
    unsinged and (signed)
    01背包模板 开心的小明
  • 原文地址:https://www.cnblogs.com/yanweifeng/p/12901368.html
Copyright © 2011-2022 走看看