クイックソートアルゴリズム:ピボット選択方法と計算量の解析

クイックソートの基本概念 クイックソートは、分割統治法に基づく効率的なソートアルゴリズムです。これはバブルソートの改良版とも言え、バブルソートのO(n²)の計算量を改善します。クイックソートでは、ある基準値(ピボット)を選び、配列をそれより大きいグループと小さいグループに分割して再帰的に処理します。 問題設定 整数配列を受け取り、クイックソートを使っ ...

6月16日 21:58 投稿

Pythonプログラミングの基礎課題

課題1: 3つの整数を昇順で出力するプログラム 3つの整数を入力し、それらを昇順に並べて出力するプログラムを作成します。 num1 = int(input("最初の数字を入力してください:")) num2 = int(input("2番目の数字を入力してください:")) num3 = int(input("3番目の数字を入力してください:")) numbers = [num1, num2, num3] numbers.sort() print("昇順で並べ替え ...

6月14日 20:13 投稿

FHQ-Treap の学習ノート

FHQ-Treap の学習ノート Treap は Tree と Heap を組み合わせたデータ構造です。 Treap は弱いバランスの取れた二分探索木であり、カーネルツリーとして見なせます。各ノードには (Key, Value) という2つの値を持ち、Key は二分探索木の性質を満たし、Value はヒープの性質を満たします(通常は最小ヒープ)。Key は実際の情報であり、Value はランダムな値で、木の高さが ...

6月10日 16:59 投稿

Javaアルゴリズム速習ガイド

Javaアルゴリズムクイックリファレンス リスト 初期化 List<Integer> 数値リスト = new ArrayList<>(); 主なメソッド add(Object 要素); size(); get(int インデックス); isEmpty(); contains(Object o); remove(int インデックス); マップ マップはキーと値のペアを保持するコレクションです。 初期化 Map<String, Integer> マップ = new HashMap< ...

6月4日 16:11 投稿

C言語におけるマージソートの実装と最適化

マージソートは分割統治法に基づく効率的なソートアルゴリズムです。この記事では、C言語での実装方法とパフォーマンス向上のためのテクニックを解説します。 マージソートの基本概念 マージソートは配列を2つの部分に分割し、それぞれをソートした後、結果をマージするアルゴリズムです。以下の特徴があります: 時間計算量:O(n log n) 空間計算量:O(n) 安定ソート ...

5月31日 21:41 投稿

バブル、挿入、クイック、マージソートの比較

バブルソート 隣接要素を比較して交換するアルゴリズム。最大値を末尾に移動させる処理を繰り返す。 public class BubbleSort { public static void executeSort(int[] array) { int length = array.length; for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length - 1 - i; j++) { if (array[j] > array[j ...

5月27日 19:15 投稿

C++のアルゴリズムとその応用

C++の標準ライブラリは、効率的なデータ操作を支援する多くのアルゴリズムを提供しています。これらのアルゴリズムは、コンテナ内の要素を検索、変更、並べ替え、統計情報の取得など、さまざまな目的で使用されます。 1. 非変更アルゴリズム これらのアルゴリズムは、コンテナ内の要素を変更せずに操作します。 1.1 find と find_if find(first, last, value): 指定した値 ...

5月27日 14:05 投稿

Java章節摘要と配列演習

1、記事概要 内容 本記事はJava学習の摘要と配列演習の問題を紹介します。 2、章02プロジェクト構造 3、演習問題 問題 配列を用いた基本演習を実装します。 3.1 最小値探し package Practice; public class practice01 { // 主方法main関数 public static void main(String[] args) { int minValue; int[] values = { 4, 1, 6, 3, 9, 8 }; // 定 ...

5月26日 21:26 投稿

マージソートのアルゴリズム解説

#### 目次 - - 図解 - 時間計算量 - アルゴリズムの概要 - コア実装 - 完全な実装コード - テストケース - - - 入力例 - 出力例 図解 時間計算量 n log n アルゴリズムの概要 配列を再帰的に分割し、サイズが1の要素単位に分解していきます。 まず、サイズ1の要素同士を比較し、小さい方を一時配列に格納します。一方の配列が尽き ...

5月26日 10:45 投稿

Codeforces 920 (div3) 解法まとめ

問題 A - Codeforces 入力された四つの座標から、正方形の面積を求める問題です。各辺が軸に平行な正方形かどうかを判定し、辺の長さを計算して面積を求めます。 #include <bits/stdc++.h> using namespace std; typedef long long LL; int main() { int cases; cin >> cases; while(cases--) { int x1, y1, x2, y2, x3, y3, x4, y4; ...

5月25日 02:21 投稿