选择排序 and 冒泡排序 整理

选择排序 思路(按升序排列):

        依次取数组未排好序的首个元素b[i]作为哨兵值,遍历数组,依次与哨兵值比较,若元素比哨兵值小b[j]<b[k],则取该元素的下标j,并将该元素作为哨兵值k = j,直到遍历结束,若哨兵值改变,则将未排好序的首个元素b[i]与哨兵值b[k]进行交换. 重复上述过程..

 

选择排序时间复杂度:

      以第二个for循环中的比较作为基本操作,

      第一次比较n-1 次,第二次比较n-2 次,...直到比较1次,时间复杂度为:(1+n-1)*(n-1)/2 = n*(n-1)/2     = O(n2 )

 

具体代码如下:

 

 

 

冒泡排序 思路(按升序排列):

      从第一个元素开始,相邻两元素之间做比较,若前面元素比后面元素大,则交换,重复n-1 趟;每趟结束后,元素从末尾逐个从大到小排列.

 

冒泡排序时间复杂度:

      以第二个for循环中的赋值作为基本操作,

      最好情况:元素全都排列好,则只执行一次外部循环,时间复杂度为O(n-1)

      最坏情况:元素按降序排列,则第一趟进行n-1次交换,第二趟进行n-2次交换,...最后一趟进行一次交换,共进行n-1次交换

                   所以,时间复杂度为(1+n-1)*(n-1)/2 = n*(n-1)/2     = O(n2 )

具体代码如下:

 

posted on 2010-07-10 19:04  FengMichael  阅读(188)  评论(0)    收藏  举报

导航