冒泡(起泡)排序。
#include<stdio.h>
#define TRUE 1
#define FALSE 0
void bubble_sort(int a[],int n)
{
int i,j,t,change;
for(i=n-1,change=TRUE;i>=1&&change;--i)//进行n-1趟循环
{
change=FALSE;
for(j=0;j<i;++j)//在这一趟循环中 由小到大排序数组a的前i个数
{
if(a[j]>a[j+1])//由小到大排序,只要这一趟有一趟符合if的排序条件,就改变change为1
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
change=TRUE;
}
}
}
}
int main()
{
int b[6];
int length=sizeof(b)/sizeof(b[0]);
int n=length;
printf("请输入%d个整数:", n);
int i;
for(i=0;i<n;i++)
{
scanf("%d",&b[i]);
}
bubble_sort(b,n);
printf("该数组由小到大的排序结果为:");
for(i=0;i<n;i++)
{
printf("%d ",b[i]);
}
return 0;
}
在VS2019下,需将源文件的scanf改为scanf_s:
#include<stdio.h>
#define TRUE 1
#define FALSE 0
void bubble_sort(int a[], int n)
{
int i, j, t, change;
for (i = n - 1, change = TRUE; i >= 1 && change; --i)//进行n-1趟循环
{
change = FALSE;
for (j = 0; j < i; ++j)//在这一趟循环中 由小到大排序数组a的前i个数
{
if (a[j] > a[j + 1])//由小到大排序,只要这一趟有一趟符合if的排序条件,就改变change为1
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
change = TRUE;
}
}
}
}
int main()
{
int b[6];
int length = sizeof(b) / sizeof(b[0]);
int n = length;
printf("请输入%d个整数:", n);
int i;
for (i = 0; i < n; i++)
{
scanf_s("%d", &b[i]);
}
bubble_sort(b, n);
printf("该数组由小到大的排序结果为:");
for (i = 0; i < n; i++)
{
printf("%d ", b[i]);
}
return 0;
}