上几章节我们学了各种排序,今天,我们还是学排序:交换排序
交换排序,首先以第一位置上的数为先,将第一位置上的数与第二位置上的数进行比较,进行交换将小的数放在第一位置上,再将第一位置上的数与第三位置上的数进行比较,进行交换,将小的数放在第一位置上,如此反复,直到比完;然后以第二位置为先,将第二位置上的数与第三位置上的数进行比较,将小的数放在第二位位置上........最终从小到大就排好了顺序。
初始数组顺序【2 9 6 1 7 4】
首先, 将第一位置的2与第二位置的9比较,2小于9,不交换;再将第一位置的2与第三位置的6比较,不交换;2与1比较,交换;第一位置的1与第五位位置的7比较,不交换......
第一次排序后【1 9 6 2 7 4】
接下来,我们固定第一位置的数,不管它;将第二位置的9与第三位置的6比较,交换;将第二位置的6与第四位置的2比较,交换;将第二位置的2与第五位置的7比较,交换;......
第二次排序后【1 2 9 6 7 4】
将第三位置的9与第四位置的6比较,交换;将第三位置的6与第五位置的7比较,不交换......
第三次排序后【1 2 4 9 7 6】
.....
第四次排序后【1 2 4 6 9 7】
......
第四次排序后【1 2 4 6 7 9】
如此下来,就会发现这组数都从小到大的顺序排列。
我直接甩出代码:
#include<stdio.h>
int main()
{
int i,j,tem,n;
int a[100005]={0};
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])
{
tem=a[i];
a[i]=a[j];
a[j]=tem;
}
}
}
for(i=0;i<n;i++)
printf("%d",a[i]);
return 0;
}
记得点赞,收藏,加关注哦