冒泡排序
#include<stdio.h>
void BubbleSort(int *arr, int size)
{
int i, j, tmp;
for (i = 0; i < size - 1; i++)
{
for (j = 0; j < size - i - 1; j++)
{
if (arr[j] > arr[j+1])
{
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
void main()
{
int a[10]={8,4,9,13,3,6,2,27,16,11},i;
BubbleSort(a,10);
for(i=0;i<10;i++)
{
printf("%4d",a[i]);
}
printf("\n");
}
第一次排序
4 8 9 3 6 2 13 16 11 27
第二次排序
4 8 3 6 2 9 13 11 16 27
第三次排序
4 3 6 2 8 9 11 13 16 27
第四次排序
3 4 2 6 8 9 11 13 16 27
第五次排序
3 2 4 6 8 9 11 13 16 27
a[5]={5,4,3,2,1}
这时size=5,i<4,需要排序4次
第一次排序
此时
i=0
j<4
4,5,3,2,1
4,3,5,2,1
4,3,2,5,1
4,3,2,1,5
第二次排序
此时
i=1
j<3
3,4,2,1,5
3,2,4,1,5
3,2,1,4,5
第三次排序
此时
i=2
j<2
2,3,1,4,5
2,1,3,4,5
第四次排序
此时
i=3
j<1
1,2,3,4,5
排序完成
可知,从小到大排序,每一次排序都把最大的数放在了后面
另一种排序方法
#include<stdio.h>
void fun(int *p,int n)
{
int i,j,t;
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(p[i]>p[j])
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
void main()
{
int a[10]={8,4,9,13,3,6,2,27,16,11},i;
fun(a,10);
for(i=0;i<10;i++)
{
printf("%4d",a[i]);
}
}
其他的排序方法还有很多,大家可以参考下面这个大佬的博客:十大经典排序算法(C语言实现)
https://blog.csdn.net/mwj327720862/article/details/80498455#commentBox
转载:https://blog.csdn.net/qq_44782128/article/details/100857743
查看评论