ソートの選択


ソートの選択

  • 最適値を検索して選択した後、最初に送信されたソートアルゴリズム

  • 出典:https://visualgo.net/en/sorting

    思考アルゴリズム

  • 1番目の値を固定し、次の値から終了値まで比較する繰り返し回数->len(data)-1
  • 最上位インデックスを検索して保存し、最上位swap
  • 2番目の値を固定し、同じ比較繰返し回数が上記回数の-1
  • len(data)-1で繰り返す(固定値は開始から終了)
  • アルゴリズム実装


    Pythonコードの実装
    import random
    
    def selection_sort(data):
        for stand in range(len(data) - 1):
            lowest = stand
            for index in range(stand + 1, len(data)):
                if data[lowest] > data[index]:
                    lowest = index
            data[lowest], data[stand] = data[stand], data[lowest]
        return data
        
    data_list = random.sample(range(100), 10)
    selection_sort(data_list)
    Javaコードの実装
    import java.util.Arrays;
    
    public class SelectionSort {
    
        static void swap(int[] a, int i, int j) {
            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
    
        static void selectionSort(int[] a) {
            for (int i = 0; i < a.length - 1; i++) {
            	int minIndex = i;
            	for (int j = i + 1; j < a.length; j++ ) {
            		if (a[minIndex] > a[j]) {
            			minIndex = j;
            		}
            	}
                swap(a, i, minIndex);
            }
        }
    
        public static void main(String[] args) {
            int[] a = { 17, 14, 11, 19, 13, 15, 18, 12, 16, 20 };
    
            selectionSort(a);
            System.out.println(Arrays.toString(a));
        }
    }

    時間分析の実行

  • 2つの複文O(n 2 n^2 n 2)
    、ʥ7、実際に詳細に計算すると、n(n1)2frac{n*(n-1)}{2(n\1)、67918、