ソートアルゴリズム(C) - 挿入ソート

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/A1344714150/article/details/88657584

目標:大ソートに小型のランダムな配列の挿入ソートを使用します

:挿入ソート方法考えように、2つの交換の数、よりも小さい場合には、同様の仕上げ第二の数から出発して、トランプをソート、先行比較の数を、次いでフロント数と比較し、そして。あるいは、最初の数は循環が停止している、そして挿入の次の数、および挿入操作の回数にわたって行わ最後までプロセスを繰り返す前に、それが持っていた数より多い時間の現在の数までの電流は、ソートは完了です。

コードの実装:

    //插入排序法
	public static void insertionSort(int[] array){
		for(int i=1;i<array.length;i++){
			for(int j=i;j>0&&array[j]<array[j-1];j--){
				int temp = array[j];
				array[j] = array[j-1];
				array[j-1] = temp;
			}
		}
		
	}

テスト:

挿入ソートの基本的なバージョンでは、それは二つの隣接する数字交換動作を繰り返す必要があり、交換作業を3回コスト割当に相当し、それを最適化することができます。

:最適化思考 eはアレイ未満の場合は、[アレイ、その後、[J-1]、[i]は、jに割り当てられた値iは、eは現在、一時的な変数eの配列を使用して、サイズの配列[J-1]を比較しているJ ]割り当てアレイ[J-1]、比較を上記トークの数が電子アレイ[J-1]の比まで継続、または大電流配列[j]が、最初の数時間で、サイクルが停止し、アレイ[J ] Eに割り当てられ、次にiが++、上述した動作は、挿入操作の最後の番号が完了するまで、ソートが完了した繰り返されます。

コードの実装:

	// 插入排序法优化
	public static void insertionSortBetter(int[] array) {
		for (int i = 1; i < array.length; i++) {
			int e = array[i];
			int j;
			for (j = i; j > 0 && e < array[j - 1]; j--) {
				array[j] = array[j - 1];
			}
			array[j] = e;
		}

	}

テスト:

最適化されたバージョンと基本的なバージョンは、通常のソートの効率にほとんど差があってもよい、しかし、ソーティング効率の最適化バージョンは、急激に最も極端なケースを整然と上昇する傾向がある配列をソートするとき(配列は完全に順序付けされます)この場合、O(n)のレベルの最適化されたバージョンをソーティングの効率。

おすすめ

転載: blog.csdn.net/A1344714150/article/details/88657584