选择排序
选择排序是最简单最常用的一种排序算法。这里介绍的是简单选择排序 。
选择排序详解
#include<cstdio>
#define N 5
int main(void)
{
int a[N]={
12,3,13,45,4};
int i,j,k,temp;
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
{
if(a[j]<a[k])
k=j;//记录最小的下标
}
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
return 0;
}
由上述可知总的复杂度为O(n2)。
插入排序
这里介绍的是最直观的直接插入排序。
#include<cstdio>
#define N 5
int main(void)
{
int a[N]={
12,3,13,45,4};
int i,j,temp;
for(i=1;i<N;i++)
{
temp=a[i];//temp临时存放a[i]
j=i;
while(j>0&&temp<a[j-1])//只要temp小于前一个元素a[j-1]
{
//把a[j-1]后移一位至a[j]
a[j]=a[j-1];
j--;
}
a[j]=temp;
}
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
return 0;
}