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

    冒泡排序

    实现原理

    循环遍历数组,进行两两比较,前者大于后者,则进行交换

    时间复杂度:O(n^2)

    空间复杂度:O(1)

    两两交换的方式

    设置中间变量进行存储临时元素的值

    int x = 1;
    int y = 2;
    int temp = x;
    x = y;
    y = temp;
    // 这样最终就实现了x和y的交换
    

    使用异或运算符进行交换元素

    // 假定数据 array[j]  array[j + 1]
    // 使用异或运算符进行交换元素
    array[j] ^= array[j + 1];
    

    PHP中有list方法可以进行交换,别的语言我不太清除,上面的是通用的

    // 这是PHP7的一个list方法
    list($array[$j], $array[$j + 1]) = [$array[$j + 1], $array[$j]];
    

    Python中的进行交换的方式

    # python的就更简单了
    x, y = y, x
    

    实现

    Java实现

    public class Bubble {
    
        public static void main(String[] args) {
            int[] a = new int[]{1, 3, 4, 5, 6, 32, 54};
            bubble(a);
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i] + "	");
            }
        }
    
        public static void bubble(int[] array) {
            for (int i = 0; i < array.length - 1; i++) {
                for (int j = 0; j < array.length - 1 - i; j++) {
                    if (array[j] > array[j + 1]) {
                        // 这里使用了异或的方式
                        array[j] ^= array[j + 1];
                    }
                }
            }
        }
    }
    
    
  • 相关阅读:
    vue监听多个变量的方法
    Unicode与JavaScript详解
    两个数组合并的方法
    第13章 事件
    第12章 DOM2和DOM3
    IIS发布WebService的一些常见问题
    Openlayers修改矢量要素并且可捕捉
    Openlayers修改矢量要素
    openlayers画图形返回范围
    前台html与后台php通信(上传文件)
  • 原文地址:https://www.cnblogs.com/wxvirus/p/12907454.html
Copyright © 2011-2022 走看看