冒泡算法
#include "stdio.h"
main()
{
int l[10]={3,7,5,4,6,1,2,8,9,0};
int i,j,k;
int len=sizeof(l)/sizeof(l[1]);
printf("len:%d\n",len);
for(i=len;i>0;i--)
{
for(j=0;j<i;j++)
{
if(l[j]>l[j+1])
{
l[j]=l[j]+l[j+1];
l[j+1]=l[j]-l[j+1];
l[j]=l[j]-l[j+1];
}
}
}
for(k=0;k<len;k++)
printf("第%d个数:%d\n",k,l[k]);
}
选择排序
void swap(int *a,int *b) //交换两个整型变量的值
{
int tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
int a[10] = { 4, 1, 8, 5, 22, 56, 77, 32, 123, 2 };
int i, j;
for (i = 0; i < 10; i++)
{
int min = 9999;
int min_t;
for (j = i; j < 10; j++)
{
if (a[j] < min)
{
min = a[j];
min_t = j;
}
swap(&a[i], &a[min_t]);
}
}
int k;
for (k = 0; k < 10; k++)
{
printf("a[%d]=%d\n", k, a[k]);
}
}
二分法
int search(int *array, int min, int max, int key)//二分法查找 min是数组第一个下标,max是最后一个元素下标。返回匹配元素下表。
{
int aim = min;
while (array[aim] != key)
{
if (array[aim] < key)
{
aim = (min + max) / 2;
min = aim;
}
else
{
aim = (min + max) / 2;
max = aim;
}
}
return aim;
}