选择排序
/*运用递归的思想来进行排序。
假设有n个数,用数组来存。
one:找出1..n(位置)的最小数,然后将其放到最前端,
1号位固定。
two:找出2..n(位置)的最小数,然后将其放到2..n的前端,
2号位固定。
………………………………………………………………….
一些运行下去,直到剩一个数字,结束。
*/
#include<stdio.h>
voidselectsort(int a[],int n,int m);
intgetmin(int a[],int n,int m);
intmain()
{
int a[6]={4,-1,6,1,1234,3};
selectsort(a,0,5);
int i;
for(i=0;i<6;i++)
{
printf("%d ",a[i]);
}
return 0;
}
voidselectsort(int a[],int n,int m)
{
int i;
if(n==m)
return;
i=getmin(a,n,m);
int temp=a[n];
a[n]=a[i];
a[i]=temp;
selectsort(a,n+1,m);
}
intgetmin(int a[],int n,int m)
{
int i;
int index=n;
for(i=n;i<=m;i++)
{
if(a[index]>a[i])
{
index=i;
}
}
return index;
}
插入排序
#include<stdio.h>
voidsort(int a[],int n);
voidinsert(int a[],int n,int x);
intmain()
{
int a[4]={2,3,1,4};
sort(a,4);
int i;
for(i=0;i<4;i++)
{
printf("%d ",a[i]);
}
return 0;
}
voidsort(int a[],int n1)
{
if(n1==1)
return ;
sort(a,n1-1);
insert(a,n1-1,a[n1-1]);
}
voidinsert(int a[],int n2,int x)
{
int i;
for(i=n2-1;i>=0;i--)
{
if(a[i]>x)
{
a[i+1]=a[i];
}
else
break;
}
a[i+1]=x;
}