时间复杂度为 O(n^2)
#include <iostream>
#include <algorithm>
using namespace std;
void maopaopaixu(int a[],int n){//冒泡排序
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
swap(a[j],a[j+1]);
}
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
void xuanze(int a[],int n)//选择排序
{
int i,j;
for(i=0;i<n;i++){
int min=i;
for(j=i+1;j<n;j++){
if(a[min]>a[j])
{
min=j;
}
}
if(min!=i)
{
int t;
t=a[i];
a[i]=a[min];
a[min]=t;
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
//未优化的
void charu(int a[],int n)//插入排序,因为当与前面一个个交换的也会花费时间
{
int i,j;
for(i=1;i<n;i++)
{
for(j=i;j>0;j--)
{
if(a[j-1]>a[j])
{
swap(a[j],a[j-1]);
}else
{
break;//因为之前的已经排好序了
}
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
//优化的插入排序,因为交换也费时间,这个只需要往后移动一个,插入排序,i之前的都已经是有序的了,
void youhuacharu(int a[],int n){
int i,j,e;
for(i=1;i<n;i++)
{
e=a[i];
for(j=i;j>0;j--)
{
if(a[j-1]>e)
{
a[j]=a[j-1];
}else
{
break;//因为之前的已经排好序了,如果有比e小的,那么e就在a[j]的后面
}
}
a[j]=e;//最后将e赋值给a[j]
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
}
int main(){
int a[10]={1,5,2,6,7,8,9,4,0,3};
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
//maopaopaixu(a,10);//冒泡排序
//xuanze(a,10);//选择排序
//charu(a,10);//插入排序
//youhuacharu(a,10);//插入排序优化一点的
return 0;
}