数据结构之比较排序

思路

比较法的一个简单思路是一组数据要弄两层循环,比较的那个数从第1个到n-1个(n为比较的数的数量),被比较的数从第2个到n个。

假设我们需要的排序是从大到小(从小到大相同的道理),两个数比较,如果被比较的数也就是后面的数比前面大,那我们就把这两个数拿来交换。

这里详细说一下交换的思路,假设有两杯水,一杯是开水,编号为a,一杯是可乐,编号为b,我们可以取一个空水杯,首先将编号a开水倒入空水杯c中,相当于a的数据储存在c中,这时把b中的可乐倒入a中,再从c中把开水倒入b中,实现a, b 物质交换, 和两个数交换一样。两层循环可以遍历所有数,实现任意两个数都有比较过。

代码

#include<stdio.h>
int main()
{
	int a[100], i, n, j, temp;//n为需要排序的数的数量
	scanf("%d",&n);
    for(i = 0; i < n; i++)
       scanf("%d",&a[i]);
    for(i = 0; i < n - 1; i++)
    {      
		for(j = i + 1; j < n; j++)
        {
			if(a[i] < a[j])
				{
					temp= a[i];
                    a[i]= a[j];
                    a[j]= temp;
                }
		}
	}
	for(i = 0; i < n; i++)
		printf("%d", a[i]);
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务