size=人数;pep=人
都是由小到大
冒炮排序:
int i,j;
for(i=1;i<size-1;i++)
{
for(j=0;j<i;j++)
{
if(pep[j]>pep[j+1])
{
int temp=pep[j];
pep[j]=pep[j+1];
pep[j+1]=temp;
}
}
}
//if(pep[j]<pep[j+1]) 由大到小排序
选择排序:
int i,j,min;
for(i=0;i<size-1;i++)
{
min=i;
for(j=i+1;j<zize;j++)
{
if(pep[j]<pep[min])
{
int temp=pep[j];
pep[j]=pep[min];
pep[min]=temp;
}
}
}
//if(pep[j]>pep[min]) 由大到小排序
插入排序:
int i,j;
for(i=1;i<size;i++)
{
int temp=pep[i];
j=i;
while(j>0 && pep[j-1]>=temp)
{
pep[j]=pep[j-1];
j--;
}
pep[j]=temp;
}
//while(j>0 && pep[j-1]<=temp) 由大到小排序
Array=要搜索的数组;Key=要搜索的数
二分查找:
int lowerBound=0; //数组下边界指针
int upperBound=size-1; //数组上边界指针
int curln; //数组中间指针
int num=0; //进行比较的次数(循环的次数,计数器)
while(true)
{
++num;
curln=(lowerBound+upperBound)/2; //获得当前搜索区域的中间位置
if(Array[curln]==Key)
return num; //如果找到就退出
else if(lowerBound>upperBound) //上下指针交叉,就证明数组中没有要查找的数
return -1; //没有找到
else
{
if(Array[curln]<Key)
lowerBound=curln+1;
else
upperBound=curln-1;
}
}