冒泡排序:两两比较
#include<stdio.h>
void main()
{
int buf[100]={10,5,2,6,8,9};
int i=0,j=0;
for(i=0;i<6,i++)//需要相互比较,第i时刻
{
for(j=0;j<6-i-1;j++)
{
//两两进行比较
if(buf[j]<buf[j-1])
{
//交换位置
buf[j]+=buf[j+1];
buf[j+1]=buf[j]-buf[j+1];
buf[j]-=buf[j-1];
}
}
}
for(i=0;i<6;i++)
printf("%d ",buf[i]);
}
插入排序:将元素分为两堆(已排序/未排序),每次从未排序中取出第一个元素插入到已排序队列中
#include<stdio.h>
void main()
{
int buf[10]={10,7,9,4,6,2};
int i=0,j=0,listen,temp;
for(i=0;i<6;i++)
{
j=i;
temp=buf[i];
if(buf[j]<buf[j-1])
{
while(j>0 && temp<buf[j-1])
{
buf[j]=buf[j-1];
j--;
}
buf[j]=temp;
}
}
for(i=0;i<6;i++)
printf("%d ",buf[i]);
}
选择排序:每一次从未排序中选择最值,并依次存放
#include<stdio.h>
void main()
{
int buf[10]={9,4,5,1,2,7};
int i=0,j=0,listen,temp;
for(i=0;i<6;i++)
{
listen=i;
for(j=i+1;j<6;j++)
{
if(buf[listen]<buf[j])
{
listen=j;
}
}
if(listen!=i)
{
temp=buf[i];
buf[i]=buf[listen];
buf[listen]=temp;
}
}
for(i=0;i<6;i++)
printf("%d ",buf[i]);
}