定义一个数组或者随机输入x个数形成数组,通过冒泡排序的方式以升序的方式输出数组里的每一个元素
主要的逻辑就在函数部分,用两个for循环来确定冒泡排序的过程
第一个for循环可以得到冒泡排序的趟数,躺数总是比数组元素个数少一个的,这里涉及到冒泡排序的过程(相邻两个比较-调换);
第二个for循环可以得到每一趟冒泡排序的次数,至于为什么用p<sz-1-i,是因为冒泡排序每趟排好了以后,被升序或者降序的最后一个数是保持不动的,比如说,8,5,1,6这四个数,升序后8到最后面去了,再进行第二趟的时候8已经定型了,不会参加或者说参加了也是在最后一个,所以这么用哈
废话不多说,直接上代码吧,欢迎大佬们斧正哈
#include<stdio.h>
void bubble_sort(int arr[],int sz)
{
int i=0;
for(i=0;i<sz-1;i++)
{
int p=0;
int tmp;
for(p=0;p<sz-1-i;p++)
{
if(arr[p]>arr[p+1])
{
tmp=arr[p];
arr[p]=arr[p+1];
arr[p+1]=tmp;
}
}
}
}
int main()
{
int arr[]={9,8,7,6,5,4,3,2,1,0};
int i=0;
int sz=sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr,sz);
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
system("pause");
return 0;
}
运行后就是这样
还有可以优化的地方,下次再讲吧,或者有大佬可以一起讨论哦,拜了个拜............