push swap(ステップ2-プロジェクト分析と実装の概要)(作成中)

809 ワード

1.考慮すべき事項

  • パラメータとして文字列を受け入れる、
  • これらの変数が1 2 3 4になるとargc-1で総パラメータ個数を決定できる.
  • ただし、このように1 2 3「4 5 6」と入力すると総パラメータ数は6個となるがargc-1値は4となり、正しい総パラメータ数を特定できない.
  • (example)
     $> ./push_swap 1 2 3 4 // argc - 1 = 4
     
     $> ./push_swap 1 2 3 "4 5 6" // argc - 1 = 4
    <ソリューション>
    :パラメータの個数を正確に把握できないので、いっそ1つ1つの変数を受け入れ、spaceに従って分割し、接続リスト構造体を割り当ててatoiの整数を格納し、接続すればよい.
  • 命令セットからスタック中間要素を移動する演算はない.
  • 上部と下部の要素、すなわち頭部と尾部にある要素を全て移動します.
  • <ソリューション>
    :一方向接続リストに比べて、円形接続リスト形式の資料構造は命令演算によって要素を移動しやすいようです.
  • 最小のコマンド(エレメント間移動)でソートする必要があるため、ソート最適化アルゴリズムが必要となる.
  • Bubbleソート、挿入ソート、選択ソートの時間的複雑度はN(O^2)であるため、要素が多いほどコマンドの回数が大きくなる
  • <ソリューション>
    :比較的時間的複雑度の小さいquick sortまたはmerge sortを使用するとよい.両方でQuick sortを選択して構成します.