常见排序算法对比1--简单直接排序和冒泡排序

常见排序算法对比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)//将数组序列由小到大进行排序
{
    //将数组的循环n-1次,将每次剩余数组的最大数放到最后。
    for(i=n-1;i>=1;i--)
    {
        for(j=0;j<=i;j++)
            {
               if(term<a[j])    //还有另一种更加简洁方式形式
               {                //if(a[term]<a[j])
                   term=a[j]    //{
                   term1=j;     //      term=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)//将数组序列由小到大进行排序
{
    //将数组的循环n-1次,将每次剩余数组的最大数放到最后。
    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;
                }
            }
}

猜你喜欢

转载自blog.csdn.net/weixin_42373888/article/details/81665108