菜鸟总结(C语言最基础排序法)
冒泡排序法
特点:就近原则 成双结对;
小议:冒泡排序法按照一定顺序与相邻的元素两两进行比较,每遍历一次只确定一个元素,因此N个元素就需要遍历N-1次。
代码片段
for(i=0;i<n-1;i++)
{
for(j=0;j>n-1-i;j++)
{
if(a[j]>a[j+1])
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
交换排序法
特点:比武大会;金字塔;
小议:交换排序法会每个元素跟其他每个元素交手的机会,比较次数明显多于冒泡排序。
代码片段
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
选择排序法
特点:改变时机
小议:选择排序法与交换排序法不同之处只是改变了交换时机,也因此,与交换排序法相比,选择排序法明显减少了交换次数。
代码片段
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
}
if(k!=i)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
注:本文中全部代码默认从小到大排序;