ソートアルゴリズムの時間計算量と空間計算量
基数ソートアルゴリズム:
一、ソートアルゴリズムの時間計算量と空間計算量
**ソートアルゴリズム**
**平均時間計算量**
**最悪時間計算量**
**最良時間計算量**
**平均空間計算量**
**最悪空間計算量**
**安定性**
**バブルソート**
O(n²)
O(n)
O(1)
**選択ソート**
O(n²)
O(1)
**挿入ソート**
O(n²)
O(n)
O(1)
**クイックソート**
O(nlogn)
O(n² ...
7月28日 04:57 投稿
C言語構造体とアルゴリズムの実践演習
課題4: 書籍販売データ処理
ソースコード
1 #include <stdio.h>
2 #define MAX_BOOKS 10
3
4 typedef struct {
5 char isbn[20]; // ISBN番号
6 char title[80]; // 書籍タイトル
7 char writer[80]; // 著者名
8 double price; // 価格
9 int quantity; // 販売冊数
10 } Publication;
...
7月27日 22:11 投稿
主要なソートアルゴリズムの実装と解説
ソートアルゴリズムの基礎
バブルソート (O(n²))
安定なソートアルゴリズムで、隣接する要素を比較・交換しながら最大値を末尾に移動させる
const data = [5, 2, 8, 1, 9];
// 基本バブルソート
for (let outer = 0; outer < data.length - 1; outer++) {
for (let inner = 0; inner < data.length - 1 - outer; inner++) {
if (data[inner] > data[inner + ...
7月25日 16:39 投稿
モンドの冒険者たちのゲーム
問題説明
モンドの街の冒険者たちは、風神祭を祝うため特別なパフォーマンスを計画しています。このパフォーマンスには「冒険者の塔」という特殊な挑戦が含まれており、これは冒険者たちのチームワークと個人の耐久力を試す活動です。
「冒険者の塔」パフォーマンスでは、参加者は互いの肩の上に立ち、人間の塔を形成し、その勇気とチーム精神を示す必要があります。各冒険 ...
7月19日 00:47 投稿
ソートアルゴリズムの種類と実装
1. ソートの概念と応用
ソートとは、一連のレコードを特定のキーに基づいて昇順または降順に並べ替える操作です。ソートアルゴリズムにはいくつかの重要な特性があります。
安定性:ソート前のシーケンスに同じキーを持つ複数のレコードが存在する場合、ソート後もこれらのレコードの相対的な順序が維持される場合、そのアルゴリズムは「安定」です。例えば、元のシーケン ...
7月7日 16:15 投稿
Codeforces Round 998 (Div.3) 解説: A-D問題の解法と実装例
コンテスト参加後の復習と解法の整理を行います。問題AからDまでのアプローチとコードをまとめました。
A. Fibonacciness
5要素の数列における最大の「フィボナッチ度」を求める問題です。数列の長さが5であるため、最大でも度は3となります。各位置で成立するフィボナッチ関係の式を検討します。
具体的には、a0+a1 = a2、a1+a2 = a3、a2+a3 = a4の3つの条件が考えら ...
6月22日 17:44 投稿
宿舎管理システムの設計と実装(C言語によるデータ構造の応用)
概要
本稿では、データ構造とアルゴリズムに関する課題として開発した「宿舎管理照会ソフトウェア」について紹介する。学生の宿舎情報を効率的に管理・検索・操作することを目的とし、C言語で実装された単方向連結リストを基盤としたシステムである。主な機能には、学生情報の追加・削除・検索・ソート・表示が含まれる。ユーザーインターフェースはテキストベースのメニュ ...
5月30日 11:45 投稿
双指针アルゴリズムによる合計問題の解法
2つの数の合計が特定の値になる場合
配列がソートされている場合、双指針法を用いて効率的に解決できます。左端と右端から開始し、合計値を比較してポインタを移動します。
public class SumSolution {
public static int[] findTwoSum(int[] arr, int target) {
int start = 0;
int end = arr.length - 1;
while (start < end) {
...
5月28日 13:34 投稿
JavaのジェネリクスとObjectの比較
この記事では、メソッドが複数のオブジェクトタイプを受け入れるようにするためにジェネリクスとObjectを使用する際の違いについて説明します。
まず、具体的な例を挙げてみましょう。例えば、Javaの数値型(Double、Float、Byte、Short、Integer、Long)に対するソートアルゴリズムを考えます。
方法1: 各数値型ごとにメソッドを定義する
この方法では6つの異なるメソッド ...
5月19日 21:45 投稿
C++を用いたコンテスト参加者情報管理システムの実装
contestant.hpp
#pragma once
#include <iomanip>
#include <iostream>
#include <string>
struct Participant {
long studentId;
std::string fullName;
std::string department;
int problemCount;
int totalTime;
};
std::ostream& operator<<(std::ostream& out, const Participant& p) {
out << s ...
5月19日 19:33 投稿