void swap(int* a, int* b) //交换函数
{
int temp;
temp = *b;
*b = *a;
*a = temp;
}
void bubble_sort(int a[],int n) //用冒泡排序将a中的数据重新排列成从小到大的顺序
{
bool change; //change表示当前是否为正序,true为非正序,false则为正序
for (int i = 0,change=true; i < n&&change; i++)
{//i为执行的趟数,j为每趟过程中比较操作的索引
change = false;
for (int j =0; j < n-i-1; j++)
{
if (a[j] > a[j + 1])
{
swap(&a[j], &a[j + 1]);
change = true;
}
}
}
}//change的使用可以使得程序在数据已经正序,但趟数未进行完全时,提前终止趟数扫描
int main()
{
int n;
printf("请输入数组长度:\n");
scanf_s("%d", &n);
int *a=(int*)malloc((sizeof(int))*n);
printf("请依次输入数组元素:\n");
for (int i = 0; i < n; i++)
{
scanf_s("%d", &a[i]);
}
bubble_sort(a, n);
printf("从小到大排序结果为:\n");
for (int i = 0; i < n; i++)
{
printf("%d ",a[i]);
}
free(a);
return 0;
}
执行结果:
原文:https://www.cnblogs.com/luguoqingting/p/14589598.html