<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • 二分法c語言程序代碼(c語言調用函數格式 )


    問題分析:

    采用二分查找法查找特定關鍵字的元素。要求用戶輸入數組長度,也就是有序表的數據長度,并輸入數組元素和查找的關鍵字。程序輸出查找成功與否,以及成功時關鍵字在數組中的位置。例如,在有序表 10、13、17、 28、39、58、69、88、98、152 中查找關鍵字為88的元素。

    算法描述:

    (1)首先,從數組的中間元素開始查找,如果該元素正好是目標元素,則搜索過程結束,否則執行下一步。
    (2)如果目標元素大于/小于中間元素,則在數組大于/小于中間元素的那一半區域去查找,然后重復步驟(1)的操作。
    (3)如果某一步數組為空,則表示找不到目標元素

    代碼實現:

        #include <stdio.h>
        
    void bubblingSort(int arr[], int n) {
        int i, j, temp;
        // 每次將一個元素送到末尾,n個元素,執行n次
        for (i = 0; i < n; ++i) {
            // 之前的循環已經將i個元素送到末尾,不需要再次比較,故減去,因為跟后一個元素比較,為了避免溢出,故減一
            for (j = 0; j < n - i - 1; ++j) {
                // 如果當前的元素比后一個元素小,就交換
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
    	
        int binarySearch(int key,int a[],int n) //自定義函數binary_search()
        {
            int low,high,mid,count=0,count1=0;
            low=0;
            high=n-1;
            while(low<=high)    //査找范圍不為0時執行循環體語句
            {
                count++;    //count記錄査找次數
                mid=(low+high)/2;    //求中間位置
                if(key<a[mid])    //key小于中間值時
                    high=mid-1;    //確定左子表范圍
                else if(key>a[mid])    //key 大于中間值時
                    low=mid+1;    //確定右子表范圍
                else if(key==a[mid])    //當key等于中間值時,證明查找成功
                {
                    printf("查找成功!n 查找 %d 次!a[%d]=%d",count,mid,key);    //輸出査找次數及所査找元素在數組中的位置
                    count1++;    //count1記錄查找成功次數
                    break;
                }
            }
            if(count1==0)    //判斷是否查找失敗
                printf("查找失敗!");    //査找失敗
            return 0;
        }
        int main()
        {
            int i,key,arr[100],n;
            printf("請輸入數組的長度:n");
            scanf("%d",&n);    //輸入數組元素個數
            
            printf("請輸入數組元素:n");
            for(i=0;i<n;i++)
                scanf("%d",&arr[i]);    //輸入有序數列到數組a中
                
            printf("排序前:"); 
            for (i = 0; i < n; ++i) {
    				        printf("%d ", arr[i]);
    				    } 
    				    
            bubblingSort(arr,n);//冒泡排序
            printf("排序后:");
    		for (i = 0; i < n; ++i) {
    		        printf("%d ", arr[i]);
    		    } 
    		    
            printf("請輸入你想查找的元素:n");
            scanf("%d",&key);    //輸入要查找的關鍵字
            binarySearch(key,arr,n);    //調用二分法查找函數 
            printf("n");
            return 0;
        }

    運行結果:

    C語言二分查找算法

    我從事互聯網行業幾十年,主要的研究方向是大數據,人工智能,物聯網領域,感興趣的朋友可以關注我,也可以在評論區留言,大家一起交流和溝通。

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费