方法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)
この方法では、マージソートアルゴリズムを使用して配列内の奇数をソートします。配列を再帰的に分割し、マージ操作を行います。
これらはいくつかの一般的な方法ですが、他にも様々な方法があります。ご参考までにお使いいただければ幸いです。