一.基本思想:
每一趟让最大值下沉(或让最小值上浮),固定每次下沉了的最大值(上浮了的最小值)。
二.C语言代码实现
#include <stdio.h>
using namespace std;
int a[105];
void bubbleSort(int a[],int n)
{
int temp;
bool flag;
//上浮
/*for(int i = 0; i < n ; i++)
{
for(int j = n-1; j > i; j--)
{
if(a[j] < a[j-1])
{
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}*/
//下沉
for(int i = n-1; i >= 0; i-- )
{
flag = false;//优化标记(上面那个的优化也一样~)
for(int j = 0; j < i; j++)
{
if(a[j] > a[j+1])
{
flag = true;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
if(!flag) break;
}
}
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i = 0; i < n; i++)
{
scanf("%d",&a[i]);
}
bubbleSort(a,n);
for(int i = 0; i < n; i++)
{
printf("%d ",a[i]);
}
puts("");
}
return 0;
}