常见排序算法对比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;
}
}
}