重溫冒泡排序

今天需要對一個數組排序,呵呵,又重新使用了一下冒泡排序。

 #include "stdafx.h"
 #include "stdio.h"

 

int _tmain(int argc, _TCHAR* argv[])
{
       int A[] = {3, 33, 45, 65, 65, 87,92, 98};
       int count = sizeof(A) / sizeof(A[0]);
 

       for( int i = count - 1; i >= 0; i-- )
       {
               for( int j = 0; j < i; j++ )
               {
                      if( A[j] > A[j+1] )
                      {
                             int temp = A[j];
                             A[j] = A[j+1];
                             A[j+1] = temp;
                      }
               }
        }

 

        for( i = 0; i < count; i++ )
        printf("%d  ", A[i]);

 

       return 0;
}

 

冒泡排序的關鍵點 1)兩個循環的逆序使用。比如, i是從大到小, j是從小到大。

                          2)外層循環的增量是內層循環的邊界值。

雖然也是O(N*N)時間複雜度,但還是比直接簡單的雙層循環還是好一點。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章