Sort() メソッドは誰もがよく知っていると考えられており、数値を低いものから高いもの (デフォルト)、および高いものから低いものに並べ替えるのに使用されます。以下は、Python と Java Script でのこの並べ替え方法の適用の違いの詳細な例です。
たとえば、Python には lst1: [1,5,8,6,2] があり、リストは小さいものから大きいものの順に並べ替える必要があります。
出力結果は [1,2,5,6,8] であり、小さいものから大きいものへの並べ替えの要件を満たしていることがわかります。
別の例として、リスト lst2 があります: [3,5,88,66,100,22]
出力結果は [3, 5, 22, 66, 88, 100] であり、小さいものから大きいものへの並べ替えの要件も満たしていることがわかります。
また、リストを降順に出力することもできます。reverse = Trueというパラメータを追加することで実現できますが、具体的なパラメータの方法については公式ドキュメントを参照してください。デフォルトは昇順で、パラメータのデフォルトは False です。
lst1 = [1,5,8,6,2]
lst2 = [3,5,88,66,100,22]
lst1.sort(reverse=True)
lst2.sort(reverse=True)
print(lst1)
print(lst2)
Javascript では、sort() メソッドを使用して配列の並べ替えを行うこともできます。
別の例として、配列に 2 桁以上の数字がある場合、sort() にはバグが発生します。
出力結果が昇順に出力されていないことがわかります。ここも上記のPythonとの違いです。Javascript の固定カプセル化メソッドを通じて昇順と降順を実装できます。
昇順:
var list = [81, 132, 24, 51, 1, 2];
list.sort(function (a, b) {
return a - b;
});
console.log(list);
降順:
var list = [81, 132, 24, 51, 1, 2];
list.sort(function (a, b) {
return b - a;
});
console.log(list);
この自己問題は関数 function(a,b) をカプセル化することで解決できることがわかります。
次に、Sort() メソッドの実装に加えて、ネイティブ書き込みメソッドを使用してソートを実装する方法を詳しく説明します。
num_list = [32,22,35,11,49,30] があるとします。リスト (配列) 内の数値は、小さいものから大きいものまで昇順に並べ替える必要があります。
以下はソート ロジックのプロセスです。この配列のソートには 3 ラウンドの比較が必要で、各ラウンドには対応する数の比較もあります。比較ラウンドの最大数は配列長 - 1、比較の最大数は配列長 - 1 - 比較ラウンドです。したがって、ネストされたループを通じてこれを実現できます。親ループは比較ラウンドの数を制御し、サブループは比較の数を制御します。次に、サブループで比較条件を追加し、条件が満たされた場合に 2 つの値の間で交換を実行して、並べ替えられた結果を取得します。
昇順で出力します。
num_list = [32,22,35,11,49,30]
def sort_lst(lst):
for i in range(len(lst) -1 ):
for j in range(len(lst) - 1 - i):
if lst[j] > lst[j+1]:
temp = lst[j+1]
lst[j+1] = lst[j]
lst[j] = temp
return lst
print(sort_lst(num_list))
同様に、降順ソートも実現できます。
num_list = [32,22,35,11,49,30]
def sort_lst(lst):
for i in range(len(lst) -1 ):
for j in range(len(lst) - 1 - i):
if lst[j] < lst[j+1]:
temp = lst[j+1]
lst[j+1] = lst[j]
lst[j] = temp
return lst
print(sort_lst(num_list))
同じネイティブ ロジックを JavaScript で記述することもできます。
昇順:
var array = [32,22,35,11,49,30];
function sort(array) {
for (var i = 0; i < array.length - 1; i++) {
for (var j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
var temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
console.log(sort(array));
降順:
var array = [32,22,35,11,49,30];
function sort(array) {
for (var i = 0; i < array.length - 1; i++) {
for (var j = 0; j < array.length - 1 - i; j++) {
if (array[j] < array[j + 1]) {
var temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
console.log(sort(array));