您的位置:首页 > 其它

论简单排序算法和冒泡排序算法区别

2014-04-07 23:46 218 查看
    简单排序算法

    算法描述:若对n个数进行由大到小排序,则每趟从现有数中选出一个最大数,共进行n-1趟。

    单从描述上看,有点类似迭代。“从n个数中选出最大数”是简单排序算法的原子操作。只是我们需要n个选出最大、次大、第三大....

    从n个数中选出最大数思路:令最大数为a,数组num由n个数构成。实现:

     int a=0;

for(int i=0;i<n;i++)

{

if(a<num[i])

exchange(a,num[i]);

}

    推导至实现n个数的简单排序。思路:令i来控制比较的趟数,每一趟会产生个当前最大的数,放在队首。对于具体某趟,实现的就是从n数选最大数事情,只是被选择的数会随着趟数的增加而减少。实现:

for(int i=0;i<n-1;i++)

{

    for(int j=i+1;j<10;j++)

    {

 
if(num[i]<num[j])

exchange(num[i],num[j]);

    }

}

    冒泡排序

    算法描述:不断比较相邻两个数大小,如果顺序错误,则交换。

    思路:共比较n-1趟,每趟获得当前数中最大值,相比于简单选择排序不同的是:在具体某趟里,不只是简单地选择当前数中最大值,还要在相邻数比较中不断更换顺序。

    在实现上明显不同:选择排序是每趟将已排序好的数放在前面(更多地体现了是多个从n趟选最大数的操作),进行i和j对应数组的比较。冒泡则是,具体某趟中,相邻数的比较。

     实现:

for(int i=0;i<n-1;i++)

{

      for(int j=0;j<n-1-i;j++)

     {

            if(num[j]>num[j+1])

  
exchange(num[j],num[j+1]);

      }

}

    虽然算法执行复杂度均为O(n^2),但冒泡排序效率比简单选择排序略高。

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息