码迷,mamicode.com
首页 > 其他好文 > 详细

算法之旅——冒泡排序及选择排序

时间:2014-07-22 17:48:41      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:冒泡排序   选择排序   

  冒泡排序和选择排序是排序算法中比较简单的两种算法。

冒泡排序的思想是:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,针对所有的元素重复以上的步骤,这样每次参与比较的元素就越来越少,直到没有任何一对数字需要比较。对N个数字进行冒泡排序,需要进行N-1趟比较,第i趟中需要进行N-i次比较。由于冒泡排序中每趟都重复比较了很多元素,导致此算法的时间效率不是很高,其平均时间复杂度为O(n*n).

这里给出一份冒泡排序的参考代码:

//description:冒泡排序
//author:hust_luojun
//data:2014_7_22

#include <iostream>
using namespace std;

int main()
{
    void bubble_sort(int arrary[],int length);
    int arrary[]={13,3,76,56,86,43,76,6,34,75};
    cout<<"the origin arrary is:"<<endl;
    int i;
    for(i=0;i<10;i++)
        cout<<arrary[i]<<"  ";

    bubble_sort(arrary,10);
    i=0;
    cout<<endl;
    cout<<"the sorted arrary is:"<<endl;
    for(int i=0;i<10;i++)
        cout<<arrary[i]<<"  ";
    return 0;
}

void bubble_sort(int arrary[],int length)
{
   int i;
   int j;
   int k;
   for(i=0;i<length-1;i++)
       for(j=0;j<length-1-i;j++)
       {
           if(arrary[j]>arrary[j+1])
              {
                  k=arrary[j];
                  arrary[j]=arrary[j+1];
                  arrary[j+1]=k;
              }
       }
}

选择排序是从第一个数开始,将这个数与它后面的每个数比较,若该数比后面的数都小,则不交换,它留在原位置:若该数比后面的数大,则找出它后面数中最小的那个数,使之与其交换,这样最小的数就跑到前面来了,以此类推,N个数需进行N-1趟比较。选择排序的时间复杂度也为O(n*n),效率也不高,在实际应用中,较少选择冒泡排序和选择排序,因为还有时间复杂度更好的排序算法,我们只需要了解这两种算法的思想即可。这里给出衣服呢选择排序的代码,共大家参考
//description:选择法排序
//author:hust_luojun
//data:2014_7_22

#include <iostream>
using namespace std;

int main()
{
    void selection_sort(int arrary[],int length);
    int arrary[]={13,3,76,56,86,43,76,6,34,75};
    cout<<"the origin arrary is:"<<endl;
    int i;
    for(i=0;i<10;i++)
        cout<<arrary[i]<<"  ";

    selection_sort(arrary,10);
    i=0;
    cout<<endl;
    cout<<"the sorted arrary is:"<<endl;
    for(int i=0;i<10;i++)
        cout<<arrary[i]<<"  ";
    return 0;
}

void selection_sort(int arrary[],int length)
{
    int i;
    int j;
    int k;
    int t;
    for(i=0;i<length-1;i++)
    {
        k=arrary[i];
        for(j=i+1;j<length;j++)
            if(arrary[j]<k)
                {
                  t=arrary[j];
                  arrary[j]=k;
                  k=t;
                }
        arrary[i]=k;
    }
}


算法之旅——冒泡排序及选择排序

标签:冒泡排序   选择排序   

原文地址:http://blog.csdn.net/shanshui2010/article/details/38043755

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!