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

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 UM程式研究日誌 的頭像
    UM程式研究日誌

    UM程式研究日誌

    UM程式研究日誌 發表在 痞客邦 留言(0) 人氣()