zoukankan      html  css  js  c++  java
  • 交换排序

    交换排序的基本思想:两两比较待排序关键字,一旦发现两个记录不满足次序要求则进行交换,知道整个队列全部满足要求为止

    冒泡排序

    冒泡排序是一种最简单的交换排序,他通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上“漂浮”,或者往下沉。

     1 public class BubbleSort {
     2     
     3     public static void main(String [] args) {
     4         int[] array = new int[]{2, 6, 3, 8, 9, 0, 1, 7, 4};
     5         BubbleSort(array);
     6     }
     7     
     8     public static void BubbleSort(int[] array) {
     9         printArray(array);
    10         for(int i = 0; i < array.length; i++) {
    11             boolean flag = true;    // 标记本次循环没有数据交换
    12             for(int j = 0; j < array.length - i - 1; j++) {
    13                 if(array[j] > array[j+1]) {
    14                     int tmp = array[j];
    15                     array[j] = array[j+1];
    16                     array[j+1] = tmp;
    17                     flag = false;   // 发生了数据交换
    18                 }
    19             }
    20             printArray(array);
    21             if(flag) {
    22                 // 如果本次循环没有发生任何数据交换
    23                 break;
    24             }
    25         }
    26     }
    27     
    28     public static void printArray(int[] array) {
    29         for(int i : array) {
    30             System.out.printf("%d	", i);
    31         }
    32         System.out.println();
    33     }
    34 }

    时间复杂度:O(n2)

    空间复杂度:O(1)

    算法特点:

    1. 稳定排序
    2. 可用于链式存储结构
    3. 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,记录数较大时,不宜采用。
  • 相关阅读:
    Golang 实现简单的 Web 服务器
    Aliyun linux repo文件
    云服务器查看登录ip和本机出口ip
    10个高效Linux技巧及Vim命令对比
    使用mkfs.ext4格式化大容量磁盘
    LINUX SHELL 多个命令一起执行的几种方法
    GPT分区
    3种方法更改Linux系统的主机名(hostname)
    Nginx代理访问RDS
    Centos7安装Docker
  • 原文地址:https://www.cnblogs.com/maosonglin/p/13689549.html
Copyright © 2011-2022 走看看