小言_互联网的博客

C语言中的排序方法

279人阅读  评论(0)

冒泡排序

 #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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场