ホームページ  >  記事  >  Java  >  配列ソートの詳細な紹介

配列ソートの詳細な紹介

零下一度
零下一度オリジナル
2017-07-23 17:22:001166ブラウズ

1 概要

1. 二重層ループ

ソートは通常、二重層ループによって実装され、内側のループは単一のソートを実装します。 。外側のループのインデックスは 1 から arr.length-1 までで、外側のループの反復数が増加するにつれて、内側のループの反復数は減少します。

2 バブル法

1. 基本的な考え方

条件が満たされた場合、大きいほうの要素が後ろに移動するように位置を入れ替えます。

2. アルゴリズムの実装

public static int[] bubbleSort(int[] arr) {for (int i = 1; i < arr.length; i++) {for (int j = 0; j < arr.length - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }return arr;
    }

3 つの直接ソート

1. 基本的な考え方

未ソートのシーケンスから最大値をフィルタリングして、未ソートのシーケンスの最後に配置します。外側のループは 1 回ループし、ソートされていないシーケンスの最大値の位置と、ソートされていないシーケンスの最後の要素の位置を交換します。重要なのは、最大値のインデックスを取得することです。ダイレクトソートはバブルソートよりも高速です。

内部ループのエントリ ポイント: 並べ替えられていないシーケンスの最初の要素 (インデックス 0) が最大値であると仮定し、それを残りの要素と比較して最大値のインデックスを取得します。

2. アルゴリズムの実装

public static int[] directSort(int[] arr) {int len = arr.length;int index;for (int i = 1; i < len; i++) {
            index = 0;for (int j = 1; j <= len - i; j++) {if (arr[index] < arr[j]) {
                    index = j;
                }int temp = arr[len - i];
                arr[len - i] = arr[index];
                arr[index] = temp;
            }
        }return arr;
    }

4つの逆ソート

1. 基本的なアイデア

インデックスの合計がarr.length-1である2つの要素の位置を1つのレイヤーループだけで交換します、ループの数は arr.length/2-1 です。

2. アルゴリズムの実装

public static int[] reverseSort(int[] arr) {for (int i = 0; i < arr.length / 2; i++) {int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }return arr;
    }

以上が配列ソートの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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