反復マージソート用のJavaプログラム
以下は、反復マージソート用のJavaプログラムです-
例
import java.util.Arrays;
public class Demo{
public static void merge_sort(int[] my_arr){
if(my_arr == null){
return;
}
if(my_arr.length > 1){
int mid = my_arr.length / 2;
int[] left = new int[mid];
for(int i = 0; i < mid; i++){
left[i] = my_arr[i];
}
int[] right = new int[my_arr.length - mid];
for(int i = mid; i < my_arr.length; i++){
right[i - mid] = my_arr[i];
}
merge_sort(left);
merge_sort(right);
int i = 0;
int j = 0;
int k = 0;
while(i < left.length && j < right.length){
if(left[i] < right[j]){
my_arr[k] = left[i];
i++;
} else {
my_arr[k] = right[j];
j++;
}
k++;
}
while(i < left.length){
my_arr[k] = left[i];
i++;
k++;
}
while(j < right.length){
my_arr[k] = right[j];
j++;
k++;
}
}
}
public static void main(String[] args){
int my_arr[] = {56, 78, 91, 21, 34, 0, 11};
int i=0;
merge_sort(my_arr);
System.out.println("The array after sorting is ");
for(i=0; i<my_arr.length; i++)
System.out.print(my_arr[i]+" ");
}
} 出力
The array after sorting is 0 11 21 34 56 78 91
Demoという名前のクラスには、「merge_sort」関数が含まれています。この関数は、配列が空かどうかをチェックし、空の場合は何も返しません。配列の長さが1より大きい場合、「mid」の値が計算され、配列は「mid」の値まで繰り返されます。基本的に、配列は2つの等しい部分に分割され、配列の左側の要素は新しい配列に配置され、配列の右側の要素は別の配列に配置されます。現在、これらの配列は分離され、ソートされています。次に、それらは一緒にマージされます。
main関数では、配列が定義され、この配列要素で関数が呼び出されます。出力はコンソールに表示されます。
-
反復クイックソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、反復的な方法を使用したクイックソートの概念を使用して配列をソートする必要があります ここでは、最初に配列をパーティション化し、別のパーティションを並べ替えて、並べ替えられた配列を取得します。 それでは、以下の実装のソリューションを見てみましょう- 例 # iterative way def partition(arr,l,h): i = ( l - 1 ) x = arr[h] for j in rang
-
反復マージソート用のPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、反復によるマージソートの概念を使用して配列をソートする必要があります。 ここでは、最大の要素を最後に配置します。これは、配列がソートされるまで繰り返されます。 次に、以下の実装のソリューションを見てみましょう- 例 # iterative way def mergeSort(a): current_size = 1 # traversing subarrays while current_size <