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