• 交换排序


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

    冒泡排序

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

     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. 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,记录数较大时,不宜采用。
  • 相关阅读:
    BZOJ:4219: 跑得比谁都快 3007: 拯救小云公主
    BZOJ:4816: [Sdoi2017]数字表格
    BZOJ:4333: JSOI2012 智者的考验
    BZOJ:3911: SGU383 Caravans(三角剖分)
    bzoj:2595: [Wc2008]游览计划
    ZOJ3602:Count the Trees
    A Dangerous Maze (II) LightOJ
    Where to Run LightOJ
    Lights inside 3D Grid LightOJ
    Snakes and Ladders LightOJ
  • 原文地址:https://www.cnblogs.com/maosonglin/p/13689549.html
Copyright © 2020-2023  润新知