配列内の奇数をソートする方法


方法1: ビルトイン関数を使用する方法

array = [3, 1, 6, 2, 5, 4]
sorted_array = sorted([x for x in array if x % 2 != 0])
print(sorted_array)

この方法では、sorted() 関数を使用して、配列内の奇数のみを抽出し、それらを昇順にソートします。

方法2: バブルソートを使用する方法

def bubble_sort(array):
    n = len(array)
    for i in range(n):
        for j in range(0, n-i-1):
            if array[j] % 2 != 0 and array[j+1] % 2 != 0:
                if array[j] > array[j+1]:
                    array[j], array[j+1] = array[j+1], array[j]
    return array
array = [3, 1, 6, 2, 5, 4]
sorted_array = bubble_sort(array)
print(sorted_array)

この方法では、バブルソートアルゴリズムを使用して配列内の奇数をソートします。配列内の隣接する奇数要素を比較し、必要に応じて交換します。

方法3: マージソートを使用する方法

def merge_sort(array):
    if len(array) <= 1:
        return array
    mid = len(array) // 2
    left_half = array[:mid]
    right_half = array[mid:]
    left_half = merge_sort(left_half)
    right_half = merge_sort(right_half)
    return merge(left_half, right_half)
def merge(left, right):
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] % 2 != 0 and right[j] % 2 != 0:
            if left[i] < right[j]:
                result.append(left[i])
                i += 1
            else:
                result.append(right[j])
                j += 1
        elif left[i] % 2 != 0:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result.extend(left[i:])
    result.extend(right[j:])
    return result
array = [3, 1, 6, 2, 5, 4]
sorted_array = merge_sort(array)
print(sorted_array)

この方法では、マージソートアルゴリズムを使用して配列内の奇数をソートします。配列を再帰的に分割し、マージ操作を行います。

これらはいくつかの一般的な方法ですが、他にも様々な方法があります。ご参考までにお使いいただければ幸いです。