起泡排序和简单选择排序小结

起泡排序和简单选择排序都是一种很简单的排序方法,它们的时间复杂度都为O(N2). 其中起泡排序是一种稳定的排序方法,而简单选择排序是一种不稳定的排序方法.

这里直接贴代码

// 起泡排序和简单选择排序.cpp : 定义控制台应用程序的入口点。

#include “stdafx.h”
#include

using namespace std;

//交换a与b
void swap(int &a,int &b)
{
  int temp=a;
  a=b;
  b=temp;
}

//冒泡排序
void  BubbleSort(int * a,int len)
{
    //进行len-1趟冒泡排序
 for(int i=1;i {
  bool exchage=false;//标记这一趟冒泡是否进行了数据交换,也就是标记是否排序完成
  for(int j=0;j  {
    if(a[j]>a[j+1])
  {
          swap(a[j],a[j+1]);
    exchage=true;
  }
  }
  if(!exchage)
        break;
 }
}

//简单选择排序
void SelectSort(int *a,int len)
{
  //将前面n-1个位置的数选择排好,最后一个自动排好了
  for(int i=0;i  {
    int min=i;
  for(int j=i+1;j  {
  if(a[j]    min=j;
  }
  if(i!=min)
  {
  swap(a[i],a[min]);
  }
  }
}

//
void printArray(int *a,int len)
{
  for(int i=0;i  cout<  cout<}

int _tmain(int argc, _TCHAR* argv[])
{
 int a[]={49,38,65,97,76,13,27,49};
 int len=sizeof(a)/sizeof(int);
 printArray(a,len);
    //BubbleSort(a,len);
 SelectSort(a,len);
 printArray(a,len);
 system(“PAUSE”);
 return 0;
}

Python实现冒泡排序法 http://www.linuxidc.com/Linux/2014-06/103897.htm

Go语言实现冒泡排序 http://www.linuxidc.com/Linux/2014-06/103844.htm

C++ 使用模板实现冒泡排序 http://www.linuxidc.com/Linux/2014-02/96914.htm

Java简单排序之冒泡排序代码 http://www.linuxidc.com/Linux/2013-11/92782.htm

冒泡排序优化版,性能近乎翻倍 http://www.linuxidc.com/Linux/2013-09/90710.