1.题目
2.解法
冒泡排序的算法思想是这样的:
比较相邻的两个元素,如果第一个比第二个大(或小),就交换它们的位置;
对每一对相邻的元素重复这个操作,直到遍历完整个数组,这样最大(或最小)的元素就被移动到了数组的末尾;
除了最后一个元素,对剩余的元素重复上述步骤,直到数组完全有序。
冒泡排序的名字来源于它的过程,就像水里的气泡一样,越小(或越大)的元素会逐渐上浮到数组的顶部。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class BubbleSort { public static void main(String[] args) { int [] nums = new int []{ 1 , 8 , 5 , 2 , 7 , 0 }; sortArray(nums); System.out.println(); } public static void sortArray( int [] nums) { int length = nums.length; for ( int i = 0 ; i < length; i++) { for ( int j = 0 ; j < length - 1 - i; j++) { if (nums[j] > nums[j + 1 ]) { int temp = nums[j]; nums[j] = nums[j + 1 ]; nums[j + 1 ] = temp; } } } } } |
冒泡排序的时间复杂度是指执行冒泡排序算法所需要的时间,它取决于比较和交换的次数。
最好的情况是,数组已经有序,只需要进行一趟冒泡,比较 n-1 次,不需要交换,所以时间复杂度是 O (n);
最坏的情况是,数组完全逆序,需要进行 n-1 趟冒泡,每趟比较 n-i 次,并且每次都要交换,所以时间复杂度是 O (n^2);
平均的情况是,每趟冒泡大约需要比较和交换 n/2 次,总共需要进行 n-1 趟冒泡,所以时间复杂度是 O (n^2);
综上,冒泡排序的时间复杂度是 O (n^2)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)