今天需要對一個數組排序,呵呵,又重新使用了一下冒泡排序。
#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)時間複雜度,但還是比直接簡單的雙層循環還是好一點。