冒泡排序
冒泡排序是指在排序时,每次比较相邻两个数组的值(按从小到大的排列
#include<stdio.h>
#define N 210
int main()
{
int n,i,j,temp;
int put[N]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&put[i]);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(put[i]>put[j])
{
temp=put[i];
put[i]=put[j];
put[j]=temp;
}
}
for(i=0;i<n;i++)
{
printf("%d",put[i]);
}
return 0;
}
选择排序
选择排序是指每次从待排序数组中选择一个最小的数组元素(若从大到小的顺序顺序,每次需要选择最大值的数组元素),将这个数组元素的值与最前面还未排序的数组元素的值进行交换
#include<stdio.h>
int main()
{
int i,j;//循环变量,下标
int a[10];
int temp;//交换
int k;//用来记录最小值的下标
for(i=0;i<10;i++)//输入数组
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)//排序轮数
{
k=i;//“i”未排好序的第一个元素的下标(用k保存i)
for(j=i+1;j<10;j++)
if(a[k]>a[j];
{
k=j;
}
}
if(k!=i)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for(i=0;i<10;i++)
{
printf("%4d",a[i])
}
return 0;
}
交换法排序
交换法排序是指,将每个数组元素与其后的所有元素一一比较,如果符合条件,则交换。
#include<stdio.h>
int main()
{
int i,j;
int a[10];
int temp;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<9;i++)//排序时,是分成两部分,一部分排序的,另一部分未排序的(排序轮数)
{
for(j=i+1;j<10;j++)//比较
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for(i=0;i<10;i++)
{
printf("%d",a[i[]);
}
return 0;
}
排序算法的比较
1.选择排序
需要进行n(n-1)/2的比较。相互交换n-1次,适合于数量较小的排序。
这是一种不稳定的排序方法。
2.冒泡排序
最好的情况是正序,只需要比较一次,最坏的是逆序,需要n*n次,是最稳定的排序方法。
3,交换法排序
不稳定的排序方法,正序效果较好,逆序不太好
总结
在数组中最主要需要理解的是数组的意义所在,它的作用是什么,它可以解决什么样的问题,这都是初学者应该考虑的,踏踏实实走好每一步,这是最好的路途。最近在蓝桥杯上接触了很多这样的有关数组的问题,题目看起来挺难,可是最后发现,这不就是简简单单的数组排序问题吗?这就告诉我,无论走多远,还是要回头看看,背后的风景很美,加油!