基本~ソートと呼ばれるものは3つあり、いずれも最大計算回数O(n^2)と速度はいまいちですが、プログラミングの楽しさを知ったきっかけになったので復習してみます。
今回は、基本交換法(バブルソート)をjavaで実装します。
要素の入れ替えをするときに、直で入れ替えをしてしまうとその時点で配列の中身を上書きしてしまうので、それを防ぐために一時変数を挟むという仕組み。 実行結果は
今回は、基本交換法(バブルソート)をjavaで実装します。
import java.util.Random; public class BubbleSort { static int n = 10; //配列の要素数 static int[] data = new int[n]; public static void main(String[] args){ Random rand = new Random(); int temp; //配列の用意 for(int i=0;i<n;i++){ data[i] = rand.nextInt(100)-50; } System.out.println("用意された配列は"); printData(); //ソート for(int i=0;i<n;i++){ for(int j=0;j<n-i-1;j++){ if(data[j]>data[j+1]){ temp = data[j]; data[j] = data[j+1]; data[j+1] = temp; } } } System.out.println("ソート後"); printData(); } //配列表示用 static void printData(){ for(int i=0;i<n;i++){ System.out.printf("%d ",data[i]); } System.out.println(); } }ポイントは23~25行目の、要素の入れ替えのところ。
要素の入れ替えをするときに、直で入れ替えをしてしまうとその時点で配列の中身を上書きしてしまうので、それを防ぐために一時変数を挟むという仕組み。 実行結果は
用意された配列は -19 15 -14 0 -44 36 -24 16 42 32 ソート後 -44 -24 -19 -14 0 15 16 32 36 42ここでは配列の要素に乱数を持たせているので、実行毎に配列は変わります。
コメント