看了几个程序,有冒泡排序、归并排序、插入排序等。
冒泡排序,是时间常数最大的,每次循环将最大的元素放到最后,
插入排序,每次取出后一个元素,和前面的元素比较,大的放在后面。
归并排序,
-
#include<stdio.h>
-
#include<stdlib.h>
-
#define len 5
-
-
int a[len]={11,5,2,4,7};
-
-
void insert()
-
{
-
int tmp;
-
int i,j,m;
-
for( i=0;i<len-1;i++)
-
{
-
for( j=0;j<=i;j++)
-
{
-
tmp=a[j+1];
-
-
-
if(a[j]>a[j+1])
-
{
-
-
-
a[j+1]=a[j];
-
-
a[j]=tmp;
-
-
}
-
}
-
// for(m=0;m<len;m++)
-
// printf("buble iiiiiii a[%d]=%d\n",m,a[m]);
-
printf("%d,%d,%d,%d,%d\n",a[0],a[1],a[2],a[3],a[4]);
-
-
-
}
-
-
-
-
}
-
-
-
void buble()
-
{
-
int tmp;
-
int i,j,m;
-
for ( i=0;i<len;i++)
-
{
-
for( j=0;j<len-i-1;j++)
-
{
-
if(a[j]>a[j+1])
-
{
-
tmp=a[j];
-
a[j]=a[j+1];
-
a[j+1]=tmp;
-
}
-
-
-
//printf("buble i= %d a[%d]=%d\n",i,j,a[j]);
-
}
-
-
for(m=0;m<len;m++)
-
printf("buble bbbbb a[%d]=%d\n",m,a[m]);
-
-
-
}
-
-
-
}
-
-
-
int main(void)
-
{
-
// int a[len]={10,5,2,4,7}
-
int i;
-
for(i=0;i<len;i++)
-
printf("buble x a[%d]=%d\n",i,a[i]);
-
-
insert();
-
//buble();
-
-
for(i=0;i<len;i++)
-
printf("buble xxx a[%d]=%d\n",i,a[i]);
-
// buble( a[len],len);
-
-
}
插入排序图例:
归并排序:
将大的序列转换成小的
阅读(1198) | 评论(0) | 转发(0) |