- 插入排序(把元素分为两堆排好的一堆,未排序的一堆,每次从未排序的一堆中去一个元素插入到一排好的序
void input_select(int buf[],int ilen)
{
int i,j,k=0;
for(i=0;i<ilen;i++)
{
j=i;
k=buf[i];
while(j>0&&buf[j-1]<k)
{
buf[j]=buf[j-1];
j--;
}
buf[j]=k;
}
for(i=0;i<ilen;i++)
{
printf("%d",buf[i]);
}
}
- 冒泡排序(思想,在同一时刻对两个数组元素进行比较,并交换位置)
#include<stdio.h>
void main()
{
int buf[10]={2,1,5,7,9,3,4,6,0,8};
int i=0,j=0,k=0,t=0;
for(i=0;i<10;i++)
{ printf("第i次: ");
for(t=0;t<10;t++)
{
printf("%d ",buf[t]);
}
printf("\n");
for(j=0;j<10-i-1;j++)
{
if(buf[j]>buf[j+1])
{
k=buf[j];
buf[j]=buf[j+1];
buf[j+1]=k;
}
}
}
for(i=0;i<10;i++)
{
printf("%d",buf[i]);
}
}
#include<stdio.h>
int getmax(int buf[],int ilen)
{
int max=0,i=0,j=0;
for(i=0;i<ilen;i++)
{
if(buf[max]<buf[i]) 监哨值法
{
max=i;
}
}
return max;
}
- 选择排序算法(思想:每次取最值 放在循环位)
void sort_select(int buf[],int ilen)
{
int i=0,j=0,max=0;
for(i=0;i<ilen-1;i++)
{
max=i;
for(j=i+1;j<ilen;j++)
{
if(buf[max]<buf[j])
{
max=j;
}
}
if(max!=i)
{
buf[i]+=buf[max];
buf[max]=buf[i]-buf[max];
buf[i]-=buf[max];
}
}
}