8.21

    科技2024-07-08  73

    冒泡排序是基于 "交换" 的排序: 根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。

     

     

     

     

     

    算法思路分析:

    第一个 for 循环的含义是:n 个元素,最多需要处理 n-1 次。(不同元素的层面) 第二个 for 循环的含义是:这次的处理中,从右往左,不断地将这次 for 循环范围内的最小值 转移到左边。 (具体某一次的处理过程)

    第一趟处理(冒泡)的结果是将元素最小值移到了最左边A[0], 第二趟是将整体第二小的元素移到了A[1]。(也是该次 for 循环元素范围的最小值) …… 每次处理结束后,都需要判断一下这一次的处理过程是否发生了交换,如果没有可以直接结束方法, 因为此时表已经有序了。( flag 标志 )=> 只要发生了一次交换值即可为 true.  

     

     

    算法性能分析:

    最好情况(有序):比较次数=n-1    交换次数:0    此时时间复杂度是 O(n). 最坏情况(逆序):比较次数=交换次数=(n-1)+(n-2)+……+1    此时时间复杂度是O(n^2)

    注:上面是交换次数,如果是移动次数,在 swap 函数中每次交换都需要移动元素3次。

     

    时间复杂度只需挑最深层循环内语句(即算法中基本运算),分析它的执行次数与 n 的关系即可。

    并不是简单的循环嵌套就是 n^(嵌套数) !!!

     

     

     

     

     

    Processed: 0.010, SQL: 8