起泡排序和簡單選擇排序都是一種很簡單的排序方法,它們的時間復雜度都為O(N2). 其中起泡排序是一種穩定的排序方法,而簡單選擇排序是一種不穩定的排序方法.
這裡直接貼代碼
// 起泡排序和簡單選擇排序.cpp : 定義控制台應用程序的入口點。
#include "stdafx.h"
#include <iostream>
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<len;i++)
{
bool exchage=false;//標記這一趟冒泡是否進行了數據交換,也就是標記是否排序完成
for(int j=0;j<len-i;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<len-1;i++)
{
int min=i;
for(int j=i+1;j<len;j++)
{
if(a[j]<a[min])
min=j;
}
if(i!=min)
{
swap(a[i],a[min]);
}
}
}
//
void printArray(int *a,int len)
{
for(int i=0;i<len;i++)
cout<<a[i]<<" ";
cout<<endl;
}
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.htm