冒泡排序

有如下数组

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     }
复制代码

 

posted on   Love&Share  阅读(81)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示