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

    有如下数组

    int nums[ ] = {4,2,8,0,5,7,1,3,9}

    排序步骤如图。

    排序轮数 = 元素个数 - 1;

    各轮数对应的排序次数 = 元素总个数 -  排序轮数 - 1;

    代码:

    1 for(int i = 0 ;i < 9 ; i++) {  // 排序轮数
    2   for(int j = 0; j < 9 - i - 1;j++){ // 排序次数
    3      if(nums[j] > nums[j + 1]){   // 按照升序排序
    4         swap(nums[j],nums[j + 1]);
    5       }
    6  }
    7 }

     优化:

    如果我们发现在某趟排序中,没有发生一次交换,则可以提前结束冒泡排序;

     1 public static void bubbleSort(int[] arr) {
     2         int temp = 0;
     3         boolean flag = false;// 表示是否交换
     4         for(int i = 0; i < arr.length - 1; i++) {
     5             for(int j = 0; j < arr.length - i - 1; j++) {
     6                 if (arr[j] > arr[j + 1]) {
     7                     flag = true;
     8                     temp = arr[j];
     9                     arr[j] = arr[j + 1];
    10                     arr[j + 1] = temp;
    11                 }
    12             }
    13             if (flag == false) { // 在一趟排序中,一次交换都没有发生
    14                 break;
    15             } else {
    16                 flag = false; // 重置flag,进行下次判断
    17             }
    18         }
    19 
    20     }
  • 相关阅读:
    EBS R12.2 运行请求出错
    仿ORACLE的TRUNC函数
    EBS职责清单(Responsibility)
    Oracle 11G Client 客户端安装步骤
    UltraIso-写入硬盘映像
    EBS-WIP完工入库
    LeetCode 2 两数相加
    LeetCode 1.两数之和
    装饰器示例
    爬虫day1
  • 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14266860.html
Copyright © 2011-2022 走看看