排序算法
选择法排序
方法一
自然语言描述:
c语言代码:
#include<stdio.h>
int main()
{
int a[10] = {3,2,1,5,6,1,3,7,8,9};
int i,j,temp;
for(j=0;j<10;j++)
{
for(i=j+1;i<10;i++)
{
if(a[j]>a[i])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,a[i]);
}
输出:
方法二
自然语言描述:
c语言代码:
#include<stdio.h>
int main()
{
int a[10] = {3,2,1,5,6,1,3,7,8,9};
int i,j,temp,imin;
for(j=0;j<9;j++)
{
imin = j;
for(i=j+1;i<10;i++)
{
if(a[imin]>a[i])
imin = i;
}
temp = a[j];
a[j] = a[imin];
a[imin] = temp;
}
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,a[i]);
}
冒泡排序法
自然语言描述
c语言代码
#include<stdio.h>
int main()
{
int a[10] = {3,2,1,5,6,1,3,7,9,8};
int i,j,temp,imin;
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,a[i]);
return 0;
}
插入排序法
自然语言描述
c语言代码
#include<stdio.h>
int main()
{
int a[10] = {3,2,1,5,6,1,3,7,9,8};
int i,j,temp,imin;
for(i=1;i<10;i++)
{
for(j=i;j>=0;j--)
{
if(a[j]<a[j-1])
{
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
else break;
}
}
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,a[i]);
return 0;
}
合并法排序(将两个有序数组合并成另一个有序数组)
自然语言描述
c语言代码
#include<stdio.h>
int main()
{
int a[5] = {1,3,5,7,9};
int b[5] = {2,4,6,8,10};
int c[10];
int i,j,k;
i=0;j=0;k=0;
while(1)
{
if(a[i]<b[j])
c[k++] = a[i++];
else
c[k++] = b[j++];
if(i==5 || j==5)
break;
}
if(i<5)
{
while(i!=5)
{
c[k++] = a[i++];
}
}
else
{
while(j!=5)
{
c[k++] = b[j++];
}
}
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,c[i]);
return 0;
}