ホームページ バックエンド開発 C++ 配列のソートアルゴリズムは何ですか?

配列のソートアルゴリズムは何ですか?

Jun 02, 2024 pm 10:33 PM
配列 ソートアルゴリズム

配列ソートアルゴリズムは、要素を特定の順序で配置するために使用されます。一般的なアルゴリズムの種類は次のとおりです。 バブル ソート: 隣接する要素を比較して位置を交換します。選択ソート: 最小の要素を見つけて、それを現在の位置に入れ替えます。挿入ソート: 要素を 1 つずつ正しい位置に挿入します。クイックソート: 分割統治法。配列を分割するピボット要素を選択します。マージソート: 分割統治、再帰的ソート、およびサブ配列のマージ。

配列のソートアルゴリズムは何ですか?

配列ソートアルゴリズムの紹介と実践

コンピューターサイエンスにおいて、配列ソートアルゴリズムは、要素のセットを特定の順序で配置するために使用されるアルゴリズムです。並べ替えアルゴリズムは、その原理と効率に基づいてさまざまなタイプに分類されます。以下では、いくつかの一般的な配列ソート アルゴリズムを紹介し、実際のケースを通じてその使用法を示します。

バブルソート

バブルソートは、隣接する要素のサイズを順番に比較し、前の要素が次の要素より大きい場合、その要素を入れ替えるというシンプルでわかりやすいソートアルゴリズムです。ポジション。このプロセスは、すべての要素が整うまで繰り返されます。

def bubble_sort(arr):
    for i in range(len(arr) - 1):
        for j in range(len(arr) - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

選択ソート

選択ソートも単純なソートアルゴリズムであり、その原理は、ソートされていない部分の最小の要素を見つけて、それを現在の位置の要素と交換することです。次に、すべての要素が整うまでこのプロセスを繰り返します。

def selection_sort(arr):
    for i in range(len(arr)):
        min_idx = i
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]

挿入ソート

挿入ソートは、挿入操作に基づいたソートアルゴリズムであり、その基本原理は、すべての要素が順番に配置されるまで、ソートされた部分の正しい位置に要素を1つずつ挿入することです。

def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and key < arr[j]:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key

Quicksort

Quicksort は、ピボット要素を選択して配列を 2 つの部分配列に分割し、すべての要素が順番に並ぶまで 2 つの部分配列を再帰的に並べ替えることによって機能する、分割統治型の並べ替えアルゴリズムです。

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

マージソート

マージソートは、安定した効率的な分割統治ソートアルゴリズムであり、その原理は、配列をより小さいサブ配列に再帰的に分割し、すべての要素が得られるまでサブ配列をソートおよびマージすることです。順番に並べてあります。

def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    left_half = merge_sort(arr[:mid])
    right_half = merge_sort(arr[mid:])
    return merge(left_half, right_half)

def merge(left, right):
    merged = []
    left_idx, right_idx = 0, 0
    while left_idx < len(left) and right_idx < len(right):
        if left[left_idx] <= right[right_idx]:
            merged.append(left[left_idx])
            left_idx += 1
        else:
            merged.append(right[right_idx])
            right_idx += 1
    merged.extend(left[left_idx:])
    merged.extend(right[right_idx:])
    return merged

実際的なケース

順序なしリストarr = [5, 2, 8, 3, 1, 9]があると仮定すると、クイックソートアルゴリズムを使用してそれを並べ替えることができます。コードは次のとおりです:

arr = [5, 2, 8, 3, 1, 9]
sorted_arr = quick_sort(arr)
print(sorted_arr)  # 输出:[1, 2, 3, 5, 8, 9]

以上が配列のソートアルゴリズムは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

データソートにおけるPHP配列グループ化機能の応用 データソートにおけるPHP配列グループ化機能の応用 May 04, 2024 pm 01:03 PM

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

重複要素の検索における PHP 配列グループ化関数の役割 重複要素の検索における PHP 配列グループ化関数の役割 May 05, 2024 am 09:21 AM

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。

配列を関数のパラメータとして使用できますか? 配列を関数のパラメータとして使用できますか? Jun 04, 2024 pm 04:30 PM

はい、多くのプログラミング言語では、配列を関数のパラメーターとして使用でき、関数はそこに格納されているデータに対して操作を実行します。たとえば、C++ の printArray 関数は配列内の要素を出力できますが、Python の printArray 関数は配列を走査してその要素を出力できます。これらの関数によって配列に加えられた変更は、呼び出し関数の元の配列にも反映されます。

PHP 配列のキーと値の交換: 一般的なアルゴリズムの長所と短所の分析 PHP 配列のキーと値の交換: 一般的なアルゴリズムの長所と短所の分析 May 04, 2024 pm 10:39 PM

PHP で配列キー値を交換するための 3 つの一般的なアルゴリズムには、それぞれ長所と短所があります。 array_flip(): シンプルで効率的ですが、値は一意である必要があり、多次元配列を処理できません。手動トラバーサル: 多次元配列を処理し、例外を制御できますが、コードが長くなり、効率も低下します。 ksort()+array_keys(): あらゆるタイプの配列を処理し、ソート順序を制御できますが、効率は低くなります。実際のケースでは、array_flip() が最も効率的であることが示されていますが、多次元配列を扱う場合は、手動による走査の方が適切です。

PHP 配列とリンク リストのアルゴリズム時間計算量の比較 PHP 配列とリンク リストのアルゴリズム時間計算量の比較 May 07, 2024 pm 01:54 PM

配列とリンク リストのアルゴリズムの時間計算量の比較: 配列 O(1) へのアクセス、リンク リスト O(n)、配列 O(1) の挿入、配列 O(1) の削除。 )、リンク リスト O(n) (n); 検索配列 O(n)、リンク リスト O(n)。

C++ における配列とベクトルの違いは何ですか? C++ における配列とベクトルの違いは何ですか? Jun 02, 2024 pm 12:25 PM

C++ では、配列は作成時にサイズを指定する必要がある固定サイズのデータ​​構造であるのに対し、ベクトルは実行時にサイズを変更できる動的サイズのデータ​​構造です。配列は [] 演算子を使用して要素へのアクセスと変更を行いますが、ベクトルでは、push_back() メソッドを使用して要素を追加し、[] 演算子を使用して要素にアクセスします。配列はメモリを解放するために delete[] を使用する必要がありますが、ベクトルは要素を削除するために Erase() を使用します。

すべてのリスト操作は配列でサポートされていますか?なぜまたはなぜですか? すべてのリスト操作は配列でサポートされていますか?なぜまたはなぜですか? Apr 26, 2025 am 12:05 AM

いいえ、notallistoperationSaresuptedbyarrays、andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorintorintorinsertizizing、whosimpactsporformance.2)リスト

配列のソートアルゴリズムは何ですか? 配列のソートアルゴリズムは何ですか? Jun 02, 2024 pm 10:33 PM

配列ソートアルゴリズムは、要素を特定の順序で配置するために使用されます。一般的なアルゴリズムの種類は次のとおりです。 バブル ソート: 隣接する要素を比較して位置を交換します。選択ソート: 最小の要素を見つけて、それを現在の位置に入れ替えます。挿入ソート: 要素を 1 つずつ正しい位置に挿入します。クイックソート: 分割統治法。配列を分割するピボット要素を選択します。マージソート: 分割統治、再帰的ソート、およびサブ配列のマージ。

See all articles