本文目錄一覽:
C語言怎麼用二分查找插入排序
進行二分查找的前提是數組已排序,這裡假定數組遞增排序。
每次查找都將待查找數num與處於數組中間位置a[mid]的數進行比較,num a[mid]則在mid之前的元素中進行查找,反之在mid之後的元素中進行查找。
在函數中使用low, mid, high來對待查找的範圍來進行標記。
參考代碼如下:
/*整數查找*/
void binsearch( int num, int a[], int length ) /*num為待查找數字,length為數組a的長度*/
{
int low, mid, high;
low = 0;
high = length – 1;
while( low = high )
{
mid = ( low + high ) / 2;
if( a[mid] num )
high = mid – 1;
else if( a[mid] num )
low = mid + 1;
else
return mid;
}
return -1 /*未查找到num返回-1*/
}
C語言二分法插入已排序的數組中
#includestdlib.h
void sort(int a[],int n){ /*排序函數,要使用二分法查找就必須對數組進行排序*/
int i,k;
for(i=0;in;i++){
int min=i;
for(k=i+1;kn;k++)
if(a[min]a[k])min=k;
if(i!=min){
a[min]+=a[i];/*這裡是運用加減法交換兩個數*/
a[i]=a[min]-a[i];
a[min]-=a[i];
}
}
}int find(int a[],int n,int key){/*二分法查找;參數:數組名,數組長度,查找關鍵字*/
int min=0,max=n-1;/*二分法查找頭尾變數*/
while(minmax){/*如果最頭的變數值大於最尾變數的值,則查找不到,查找失敗*/
int cen = (min+max)/2;
if(a[cen]==key) return cen;/*如果查到,則返回關鍵字在排序數組的下標*/
if(cen==min || cen==max)break;/*如果中間變數等於頭尾任一個變數,同樣查找失敗*/ if(a[cen]key) max=cen;
else min=cen; }
return -1;
}
void main(){/*主程序只是為了證明兩個函數的可行性,可以自己編寫*/
int a[]={14,10,25,36,87,95,10,12,13,8},i;
sort(a,10);
i=find(a,10,11);
if(i!=-1)
printf(“be found”);
else
printf(“no found”);
getch();
}
這是C語言求二分插入排序的程序,有問題,求教,急急急!!!
#include stdio.h
int main()
{
int a[11]; //a[0]作為哨兵,從a[1]到a[10]是真正數據
int low,mid,high;
int x;
int i,j,n;
n=10;
for(i=1; i=n; i++)
{
a[i]=0;
}
i=1;
printf(“\n要插入的數是 (還有%d個):”,n+1-i);
scanf(“%d”,x);
a[i]=x;
printf(“x=%d\n”,x);
printf(“排列後 “);
for(j=1; j=n; j++)
{
printf(” %d”,a[j]);
}
printf(“\n”);
for(i=2; i=n; i++)
{
printf(“\n要插入的數是 (還有%d個):”,n+1-i);
scanf(“%d”,x);
a[i]=x;
a[0]=a[i]; //a[0]作為哨兵
low=1;
high=i-1;
while(low=high)
{
mid=(low+high)/2;
if(a[mid] a[0])
{
high=mid-1;
}
else
{
low=mid+1;
}
}
//通過上述的折半查找,得出high值
//數據往後移動
for(j=i-1 ; j=high+1 ; j–)
{
a[j+1]=a[j];
}
//a[0]就是x,將x插入正確的位置
a[high+1]=a[0];
printf(“\nx=%d\n”,x);
printf(“排列後 “);
for(j=1; j=n; j++)
{
printf(” %d”,a[j]);
}
printf(“\n”);
}
printf(“\n我是答案;”);
for(i=1; i=n; i++)
{
printf(” %d”,a[i]);
}
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/154184.html