日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)

發布時間:2024/8/26 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

20172319 2018.10.12 《Java程序設計教程》第6周課堂測驗

  • 課程:《程序設計與數據結構》
  • 班級:1723
  • 學生:唐才銘
  • 學號:20172319
  • 指導老師:王志強
  • 日期:2018.10.12
  • 必修/選修:必修

目錄

  • 測試內容
  • 測試要求
  • 實驗步驟
    • 需求分析
  • 代碼實現及解釋
  • 程序運行結果及代碼截圖
  • 測試過程及遇到的問題
  • 代碼鏈接
  • 參考資料

測試內容

  • 已知線性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?
    (本題目2分,要求寫出結題過程)

測試要求

  • 完成藍墨云班課上的ASL測試任務;并截圖(類代碼,測試代碼,運行結果代碼)發送至藍墨云
  • 托管代碼至git@OSC,詳情參考使用開源中國托管代碼
  • 返回目錄

實驗步驟

需求分析

  • 需要了解、掌握與折半查找相關的知識
  • 了解ASL是什么?
    • 返回目錄

    代碼實現及解釋

    折半查找(二分查找):

    • 相對于線性查找來說效率較高;
    • 要求:被查找元素處在一個項目組中;被查找的元素已經排好順序;
    • 原理:首先先確定在該存儲結構的中點位置;之后將待查找的值與中值進行比較;若二者相等,則查找成功并返回此位置,否則確定新的查找區間,再繼續進行二分查找:
      • 1.若待查找值大于中值,則新的查找區間為前一查找區間的中值及區間后半部分元素。
      • 2.若待查找值小于中值,則新的查找區間為前一查找區間的中值及區間前半部分元素。
    • 從初始的查找區間開始,每經過一次與當前查找區間的中點位置上的結點值的比較,即可判斷查找是否成功,不成功則當前的查找區間便縮小一半。這一過程一直重復,直至找到待查找值的位置,或者直至當前的查找區間為空(即查找失敗)為止。
    public class BinarySearch {/** 循環實現二分查找算法arr 已排好序的數組x 需要查找的數-1 無法查到數據*/public static int binarySearch(int[] arr, int x) {int low = 0; int high = arr.length-1; while(low <= high) { int middle = (low + high)/2; if(x == arr[middle]) { return middle; }else if(x <arr[middle]) { high = middle - 1; }else { low = middle + 1; } } return -1; }//遞歸實現二分查找public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){ int midIndex = (beginIndex+endIndex)/2; if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){ return -1; } if(data <dataset[midIndex]){ return binarySearch(dataset,data,beginIndex,midIndex-1); }else if(data>dataset[midIndex]){ return binarySearch(dataset,data,midIndex+1,endIndex); }else { return midIndex; } } public static void main(String[] args) {int[] arr = { 6, 12, 33, 87, 90, 97, 108, 561 };System.out.println("循環查找:" + (binarySearch(arr, 87) + 1));System.out.println("遞歸查找"+binarySearch(arr,3,87,arr.length-1));} }

    ASL(Average Search Length :平均查找長度)

    • 衡量查找效率的一個標準。
    • 對于含有n個數據元素的查找表,查找成功的平均查找長度為:ASL=∑PiCi (i=1,2,3,…,n)。其中:Pi 為查找表中第i個數據元素的概率,Ci為找到第i個數據元素時已經比較過的次數,∑Pi=1。

    • 返回目錄


    程序運行結果及代碼截圖

    • 已知線性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?
    • 解答:
    • 表中共有11個元素,其中56為表中間元素的值。
    • 使用二分查找,則:
    • 56需要查找1次;
    • 19及80需要查找2次;
    • 13,21,75,88需要查找3次;
    • 5,37,64,92需要查找4次;
    • 查找的概率相等:1/11;
    • ASL=1/n * ∑Ci = 1/11 * (1 + 2 * 2 + 4 * 3 + 4 * 4) = 33/11 = 3

    • 返回目錄


    參考資料

    • 查找算法平均查找長度的計算方法

    • 返回目錄

    轉載于:https://www.cnblogs.com/Tangcaiming/p/9787822.html

    總結

    以上是生活随笔為你收集整理的20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。