C言語による主要なソートアルゴリズムの実装と解説

開発環境とコード規約 本記事で紹介するコードは、C言語標準規格(C99以降)を想定しており、 Visual Studio 2022などの主要な開発環境で動作します。可読性と保守性を向上させるため、変数名は論理的な意味を持つようにリファクタリングし、標準的な型定義を使用しています。 挿入ソート (Insertion Sort) 挿入ソートは、手札のトランプを整理するように、整列済みの部分 ...

7月9日 21:10 投稿

牛客冬季アルゴリズム基礎訓練キャンプ2 解答解説

問題 A 解法の考え方 入力値7個が全て{1,2,3,5,6}のいずれかであるかを検証する。無効な値が1つでもあれば即時判定する。 コード例 #include <iostream> using namespace std; bool isValid(int val) { return val == 1 || val == 2 || val == 3 || val == 5 || val == 6; } int main() { int tmp; for (int i = 0; i < 7; i++) { cin > ...

6月30日 18:41 投稿

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

クイックソートの基本概念 クイックソートは、分割統治法に基づく効率的なソートアルゴリズムです。これはバブルソートの改良版とも言え、バブルソートの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 投稿