常见排序算法对比1——==(简单直接排序和冒泡排序)==
直接选择排序
算法思想:对一个存有n个无序数的一维数组a[i];按照有序进行排序(由小到大或者由大到小)
对n个结点遍历n-1次,每次将剩下结点的最大数(最小数)放在结尾后面,过程为依次比对term(初始值为0或者+&)与a[i]的值,如果a[i]比较大(小),则term=a[i]。
下面举个例子
步骤 |
a[0] |
a[1] |
a[2] |
a[3] |
a[4] |
a[5] |
初始情况 |
2 |
5 |
1 |
3 |
9 |
1 |
第一遍 |
2 |
5 |
1 |
3 |
1 |
9 |
第二遍 |
2 |
1 |
1 |
3 |
5 |
9 |
第三遍 |
2 |
1 |
1 |
3 |
5 |
9 |
第四遍 |
1 |
1 |
2 |
3 |
5 |
9 |
第五遍 |
1 |
1 |
2 |
3 |
5 |
9 |
void pai(int a[],int n)
{
for(i=n-1;i>=1;i--)
{
for(j=0;j<=i;j++)
{
if(term<a[j])
{
term=a[j]
term1=j;
}
}
a[term1]=a[i];
a[i]=term;
term=0;
}
}
冒泡排序法
算法思想:对一个存有n个无序数的一维数组a[i];按照有序进行排序(由小到大或者由大到小)
对n个结点遍历n-1次,每次将剩下结点的最大数(最小数)放在结尾后面,过程为依次比对a[i]与a[i+1]的值,如果a[i]比较大(小),则将a[i]与a[i+1]相互调换。
将如上的数组用简单直接排序法进行排序
步骤 |
a[0] |
a[1] |
a[2] |
a[3] |
a[4] |
a[5] |
初始下 |
2 |
5 |
1 |
3 |
9 |
1 |
第一遍 |
2 |
1 |
3 |
5 |
1 |
9 |
第二遍 |
1 |
2 |
3 |
1 |
5 |
9 |
第三遍 |
1 |
2 |
1 |
3 |
5 |
9 |
第四遍 |
1 |
1 |
2 |
3 |
5 |
9 |
第五遍 |
1 |
1 |
2 |
3 |
5 |
9 |
void pai(int a[],int n)
{
for(i=n-1;i>=1;i--)
for(j=0;j<i;j++)
{
if(a[j]>a[j+1])
{
term=a[j];
a[j]=a[j+1];
a[j+1]=term;
}
}
}