20182311 2019-2020-1「オブジェクト指向プログラミングとデータ構造」実験7レポート

20182311 2019-2020-1「オブジェクト指向プログラミングとデータ構造」実験7レポート

コース:「プログラミングとデータ構造」
クラス:1823
名:コールドパンチング
学生ID:20182311の
実験先生:ジョニーの
実験日:2019年10月30日
必修/選択科目:必修

1.実験の内容

  • 検索とソートは、クラスを定義し、実装linearSearch、選択ソートクラスメソッド、そして最後にテストを完了すること。試験は、10未満、設計提出テストケース(正常、異常、境界、正のシーケンス、逆)、その学生番号4つの動作結果を図を提出した後にデータが実施例に含まれるために必要です。
  • Sorting.java Searching.java cn.edu.besti.cs1823にあなたのコードをリファクタリング(イニシャル+ 4桁の学生番号)パッケージ(例:cn.edu.besti.cs1823.G2301)。、テストコードのリリース・テスト・パッケージは、コードを実行し、再コンパイルし、コンパイルに提出し、実行ショット(IDEA、コマンドライン)
  • 参考http://www.cnblogs.com/maybe2030/p/4715035.htmlは、検索とテスト実行結果提出のスクリーンショットを追加することで、検索アルゴリズム検索アルゴリズムの多様性を学びます。
  • メソッドをソートする補助的な授業の実現について話しました:ソートヒル、ヒープの並べ替え、(3少なくとも)をソートバイナリツリーは、アルゴリズム(通常、異常、境界)テストの実行結果は、あなたがより多くのソートアルゴリズムを記述する場合、(スクリーンショットを提出達成しても、ソートプログラムの3に欠陥がある、あなたが適切なようにして取得することができます)
  • Androidアプリは、コードクラウドにコードをプッシュする、ショットを実行するために提出見つけるためのアルゴリズムとテスト結果のソートの様々なを達成するために(、余分なポイントを行うに選出されました)。

2.実験の手順と結果

  • 検索とソートは、クラスを定義し、実装linearSearch、選択ソートクラスメソッド、そして最後にテストを完了すること。
  • メソッドをソートする補助的な授業の実現について話しました:ヒルソート、ヒープソート、バイナリーツリーソート
  • リファレンスは、およびでの検索補充検索アルゴリズムの多様性を学びます
    • リニア検索:、返される反復を標準配列要素を見つける-1が見つかりません。
    • バイナリ検索:
      • バイナリが実装:最初と最後のマークをすべての要素の始めと終わりを使用して、中間フェッチ(最初+最後)/ 2、最初の<=最後のサイクルは、各ルックアップ値のポイントを達成するために場合。
      • 再帰:実質的に、コードは以下の再帰的メソッドを増加させることは、再帰的ステップマークするために使用される2つのパラメータを必要とします。
      public static Comparable BinarySearch2(Comparable[] data,Comparable target,int first,int last){
              int mid=(first+last)/2;
              if(data[mid].compareTo(target)==0){
                  return mid+1;
              }
              if(data[mid].compareTo(target)>0)
                   return BinarySearch2(data,target,first,mid-1);
              if(data[mid].compareTo(target)>0)
                  return BinarySearch2(data,target,mid+1,last);
              return false;
      }
      • 検索補間:二分探索法の修正バージョンを、以下の修正ミッドウェイ値ことを除い:
       mid=first+(target-data[first])/(data[last]-data[first])*(last-first);
      • ハッシュ・ルックアップ:インデックスモジュロ演算によるアクセスの要素を決定します。
      • フィボナッチを検索:フィボナッチ数を取得し、その後、添字黄金分割アルゴリズムは、アクセス要素を決定します。
      • 挿入ソート:フロント後方から徐々に二重ループを使用して挿入され、テーブル全体命じました。
      • バイナリ・挿入ソート:挿入ソートの改良、変更バイナリ線形探索探ります
      • クイックソート:ルートの任意の分割形態の要素二つの再帰的サブソートテーブルは、ソートのセット全体を完成させます。
      • マージソート:各つのみ要素、順次合成サブテーブルを含むサブテーブルに最初の再帰テーブル。
      • バブルソートを選択します。



  • あなたのコードをリファクタリングしてコンパイルIDEA、コマンドラインの実行ショットを提出cn.edu.besti.cs1823.Lc20182311に、パッケージを再コンパイルします。

  • Androidアプリは、検索およびテストするためのアルゴリズムを並べ替え、さまざまな達成するために
    迅速なカバーに、本当に頭痛のAndroidのレイアウトを。

3.実験過程で発生した問題や決済処理

  • 質問1:使用は、比較可能な2つの配列要素の誤差を比較するのcompareTo
  • 問題1解決方法:compareToメソッドがcomprableのインターフェイスの継承クラスに最初にすべての、2つのオブジェクトを比較するために、それがなかったです。最初の行のみがアレイのアレイはcompareToメソッドをインスタンス化せずに使用することができない宣言しかし、次のコードは、説明します。
Comprare[] a=new Comprare[4];
a[1].comprareTo(a[2]);
  • 質問2:は、Arrays.sort()メソッドはComparableインタフェースを実装する必要がありますなぜ?
  • 问题2解决方案:Arrays.sort(Object[] objs)方法的排序机制是,在内部把Object数组里面强制转换为Comparable类型,再调用compareTo()方法进行排序。调用CompareTo()方法需要实现Comparable接口。

4.参考资料

おすすめ

転載: www.cnblogs.com/lengchong/p/11870639.html