close
二分法搜尋
必需先介助上篇的氣泡排列法
//氣泡排序法示範
//Date:20140918
//[0]->[999]
//輕 -> 重 排序
//氣泡大上浮
int a[10];
int i,j,tmp;
printf("請輸入10個要排序的數字/n");
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
/*氣泡排序*/
for(i=8;i>=0;i--) //這裡我是想成10個數字要比較9次但"陣列"是從0開始所以9-1=8
{
for(j=0;j<=i;j++)
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
/*印出排序*/
for(i=0;i<=9;i++)
{
printf("a[%d]=%d/n",i,a[i]);
}
//二分法搜尋
int high=9,low=0.midnum,searchnum,finalgetnum;
do
{
midnum=(high+low)/2;
if(a[midnum]==searchnum)
{
finalgetnum = midnum; //得到最後值
break;
}
if(a[midnum]>searchnum)
{
high= midnum-1;
}
else
{
low = midnum+1;
}
}while(high>=low);
printf("您輸入的搜尋數字為%d在第%d列",searchnum,finalgetnum+1);
//因為是陣列開始為0所以補1
這也直接在部落格上打的,有錯請指教 XD
全站熱搜
留言列表