数据结构之比较排序
思路
比较法的一个简单思路是一组数据要弄两层循环,比较的那个数从第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]);
}