学生ID 20182317 2019-2020-1「オブジェクト指向プログラミングとデータ構造、」学習要約の8週目

学生ID 20182317 2019-2020-1「オブジェクト指向プログラミングとデータ構造、」学習要約の8週目

コンテンツの概要を学びます

3つの一般に使用される検索アルゴリズム(逐次探索検索、バイナリ検索、見つけるためにバイナリ・ソート木)

1.順次検索

アレイのための、順序指定された比較値、0(N)の時間計算量は,,以下が達成されます。

public static int Linear_Search(int[] data, int key) {
        if (data == null || data.length <= 0) {
            return -1;
        }
        for (int i = 0; i < data.length; i++) {
            if (data[i] == key) {
                return i;
            }
        }
        return -1;
    }

バイナリ検索

効率的な検索のためのバイナリサーチは、時間計算量0(n)は,,以下が達成され、シーケンスを注文されています:

public static int binarySearch(int[] data, int key) {
        if (data == null || data.length <= 0) {
            return -1;
        }
        int low = 0;
        int high = data.length - 1;
        while (low < high) {
            int mid = (low + high) / 2;
            if (data[mid] == key) {
                return mid;
            } else if (data[mid] > key) {
                high = mid - 1;
            } else if (data[mid] < key) {
                low = mid + 1;
            }
        }
        return -1;
    }
 
    /**
     * 二分查找的前提是有序,递归
     * 
     * @param data
     * @param key
     * @return
     */
    public static int recursiveBinarySearch(int[] data, int low, int high, int key) {
        if (data == null || data.length <= 0) {
            return -1;
        }
        if (low < high) {
 
            int mid = (low + high) / 2;
            if (data[mid] == key) {
                return mid;
            } else if (data[mid] > key) {
                recursiveBinarySearch(data, low, mid - 1, key);
            } else if (data[mid] < key) {
                recursiveBinarySearch(data, mid + 1, high, key);
            }
 
        }
        return -1;
    }

バブルソート

バブルソート:つまり、アレイから隣り合う倍の数のサイズ、背面に小さな、多数の前の数値の比較でソートする。ソートが完了するまで、第1パス動作が繰り返されます。

  • バブルソート以下のソート


public class BubbleSort {

  public static void main(String[] args) {
      int[] myArray = {18,91,38,77,36,55,74,30,2,41};
      System.out.println("排序前的数组为:");
      for(int i=0;i<myArray.length;i++) {
          System.out.print(myArray[i]+" ");
      }
      
      //冒泡排序算法
      for(int i=0;i<myArray.length-1;i++) {
          for(int j=0;j<myArray.length-1-i;j++) {
              if(myArray[j]>myArray[j+1]) {
                  int temp = myArray[j];
                  myArray[j] = myArray[j+1];
                  myArray[j+1] = temp;
              }
          }
      }
      System.out.println();
      System.out.println("排序后的数组为:");
      for(int i=0;i<myArray.length;i++) {
          System.out.print(myArray[i]+" ");
      }
  }

}

選択ソート

選択ソートは:次に、シーケンスの開始位置で置換されているグループにソートされる配列から最小値(又は最大値)を見つけるための時間であり、そうで良いソートまで、アレイは、これまでソートします。

  • 以下の選択ソートプレゼンテーション

public class SelectionSort {
 
    public static void main(String[] args) {
        int[] myArray = {18,91,38,77,36,55,74,30,2,41};
        System.out.println("排序前的数组为:");
        for(int i=0;i<myArray.length;i++) {
            System.out.print(myArray[i]+" ");
        }
        //选择排序算法
        for(int i=0;i<myArray.length;i++) {
            for(int j=i+1;j<myArray.length;j++) {
                int min = myArray[i];
                if(min>myArray[j]) {
                    int temp = myArray[i];
                    myArray[i] = myArray[j];
                    myArray[j] = temp;
                }
            }
        }
        System.out.println();
        System.out.println("排序后的数组为:");
        for(int i=0;i<myArray.length;i++) {
            System.out.print(myArray[i]+" ");
        }
    }
 
}

教科書の学習と問題解決のプロセス

  • 質問1:
  • 問題1つのソリューション:

  • 質問2:
  • 問題2ソリューション:

プロセスで解決コードのデバッグおよび問題

  • 質問1:
  • 問題1つのソリューション:

コードホスティング

(ファイル名を指定して実行は、スクリーンショットのstatistics.shスクリプトを結果)


先週試験間違った質問の概要

先週、無検査
____

ペアピアレビューと

採点

  • 14ポイント:スコアに基づいて、私はこのブログの得点を与えます。次のようにスコアは以下のとおりです。
  1. 適切な使用のマークダウン構文(1点):

    • 値下げ余分なポイントを使用しないでください。

    • 構文エラーは、(形成しない、リストが間違っている、リンクが動作しません...)プラスではありません

    • 組版の混乱はプラスではありません

  2. 要素の範囲(1点)テンプレート
    • ポイントなしで「教科書の学習と問題解決のプロセスを」行方不明
    • ポイントなし「のプロセスにおける問題解決やデバッグコード」の欠如
    • マネージコードは、ポイントなしで開くことができません
    • 「ツイニングと相互評価」はポイントなしで開くことができないの欠落
    • 行方不明プラスにすることはできません「先週は間違ったタイトルの検査がまとめました」
    • 「プログレスバー」の欠如がプラスすることはできません
    • 「参照」の欠如はプラスすることはできません
  3. 教科書の学習と問題解決のプロセス、問題1ポイント

  4. コードのデバッグおよび問題は、プロセスに問題が1点を解決します

  5. 週300以上の支店有効なコード(プラス2ポイント)
    • ポイントなし1週間提出未満20倍
  6. その他のプラスのポイント:
    • 感情、経験は大きな空の1ポイントを残しません
    • 組版の微プラス1ポイント
    • プログレスバーは、学習時間を記録し、1ポイントの状況を改善します
    • ハンズオン新しいコードを書くことがありますが、1ポイントを追加
    • クラスの選択は、1ポイントを確認した後、
    • コードはメッセージ仕様1ポイントをコミット
    • 深さの間違った質問を学ぶ、1ポイントを追加
    • コメントは真剣に、私は、問題やブログのコードに加えて1ポイントを指摘することができます
    • ペアは本物のプラス1ポイントを学びます

コメントは、学生のブログやコードを持っていました

  • ペア今週の学習
    • 20182318
    • 20182333
    • ペア学習コンテンツ
      • プログレッシブプログラムのいくつかの計算の複雑
      • スタック上のいくつかの議論と学習。など、削除、スタック、スタックを含みます
  • いくつかの議論と学習のキュー。リストと配列キュー、チームに、チーム、などを含みます
  • 先週のブログピアアセスメントケース

今週の研究の後、私はそのような方法を検索し、並べ替えなどのアプリケーションがより精通しているが、また、過去の知識のいくつかは、実際に恩恵を理解していないとして記述することができます理解している間のデータのより深い理解を学んだ知識を持っています浅いです。

学習の進捗バー

コードの行の数(/蓄積を追加) ブログ量(/蓄積を追加) 学習時間(/蓄積を追加) 重要な成長
目標 5000行 30 400時間
最初の週 126分の126 2/2 20/20
第二週 0/126 2/2 20/40
第3週 479分の353 2/6 20/60
4週 1760/2239 2/8 90分の30
5週目 1366/3615 2/10 110分の20
6週 534/4149 2/12 130分の20
7週 2800/6949 2/12 150分の20
8週目

参考資料

おすすめ

転載: www.cnblogs.com/pytznb/p/11792407.html