冒泡排序的原理是,每執行一次循環,就會把最大的數放到右邊,例子中arr[]={2,1,6,3,8,4,9,5,7,0};總共十個數,第一次選擇最大的數需要比較9次,第二次在未排序的數中選擇最大的數則就需要8次了,因爲已經有一個數已經排好序了不需要再比較了,以此類推,比較7次,6次,,,,,
也就是說有兩個循環,一個外循環一個內循環,外循環每增加1次(每選出一個最大的數),則內循環比較次數就減少1次
所以循環體是這樣的:
for(i=0;i<n-1;i++)//外循環
{
for(j=0;j<n-i-1;j++)//內循環
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
以下是例子程序:
#include <stdio.h>
void BubbleSort(int *a,int n);
void main()
{
int arr[]={2,1,6,3,8,4,9,5,7,0};
BubbleSort(arr,10);
int k;
for(k=0;k<10;k++)
{
printf("%d",arr[k]);
}
}
void BubbleSort(int *a,int n)
{
int temp;
int i;
int j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}