起泡排序和简单选择排序都是一种很简单的排序方法,它们的时间复杂度都为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;
}