该算法时间复杂度与输入的顺序有关,如果输入的是一组有序的数据,时间复杂度为O(n),如果是一组无序的数据,时间复杂度为O(n^2);空间复杂度为O(1);
//冒泡排序 #include<stdio.h> int main() { int a[] = {49,38,65,49,76,13,27,52}; //int a[] = {1,2,3,4,5,6,7,8}; int i , j ; bool change = true ; for(i = 7 ; i >= 1 && change ; i--) { change = false ; for(j = 0 ; j < i ; j++) //最大值放到a[i],很重要 if(a[j]>a[j+1]) { int w = a[j] ; a[j] = a[j+1] ; a[j+1] = w ; change = true ; } for(j = 0 ; j < 8 ; j++) printf("%d ",a[j]) ; printf("\n") ; } printf("\n") ; for(i = 0 ; i < 8 ; i++) printf("%d ",a[i]) ; printf("\n") ; return 0; }
本文深入解析冒泡排序算法,探讨其时间复杂度与输入数据顺序的关系。通过具体代码实例,展示了算法如何逐步将最大值放置于正确位置的过程,强调了算法在不同数据状态下的效率差异。
39万+

被折叠的 条评论
为什么被折叠?



