ソートアルゴリズム
10751 ワード
ソートアルゴリズム
昇順で並べられた実装コード
泡の位置合わせ
Bubbleソートは、1番目の資料と2番目の資料、2番目の資料と3番目の資料、3番目と4番目...このように(最後-1)2番目の資料と最後の資料を比較交換し、同時に資料をソートします.
第1ラウンドが完了すると、最大のデータは最後に移動するので、第2ラウンドでは、最後尾のデータはソートから除外され、第2ラウンドが完了すると、末尾から第2ラウンドまでのデータはソートから除外されます.これにより、ソートを1回行うたびに、ソートから除外されるデータが1つ増加します.
const bubbleSort = (array) => {
for (let i = 0; i < array.length - 1; i++) {
let swap;
for (let j = i+1; j < array.length; j++) {
if (array[i] > array[j]) {
swap = array[i];
array[i] = array[j];
array[j] = swap;
}
}
}
return array;
};
ソートの選択
選択ソートは、1番目のデータを2番目のデータから最後のデータまで順次比較し、最小の値を1番目のデータに配置し、2番目のデータを3番目のデータから最後のデータまで順次比較し、その中の最小の値を見つけ、2番目の位置に再配置するプロセスでソートします.
1ラウンド目では最小値のデータが一番前に表示されるので、2ラウンド目では2番目のデータを使用して比較します.同様に、第3ラウンドでは第3の資料をソートする.
const selectionSort = (nums) => {
const length = nums.length;
let minIndex, temp;
for (let i = 0; i < length - 1; i++) {
minIndex = i;
for (let j = i + 1; j < length; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
temp = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = temp;
}
return nums;
};
クイックソート
1つのリストをピボット(pivot)を基準に2つの不均一なサイズに分割し、分割された部分リストをソートし、2つのソートされた部分リストをマージしてリスト全体をソートする方法です.
const quickSort = (array) => {
if (array.length < 2) return array;
const pivot = array[0];
const small = [];
const big = [];
for (let i = 1; i < array.length; i++) {
if (array[i] <= pivot) {
small.push(array[i]);
} else {
big.push(array[i]);
}
}
return quickSort(small).concat(pivot, quickSort(big));
};
Reference
https://gmlwjd9405.github.io/tags#algorithm
Reference
この問題について(ソートアルゴリズム), 我々は、より多くの情報をここで見つけました
https://velog.io/@gunu/정렬-알고리즘
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const bubbleSort = (array) => {
for (let i = 0; i < array.length - 1; i++) {
let swap;
for (let j = i+1; j < array.length; j++) {
if (array[i] > array[j]) {
swap = array[i];
array[i] = array[j];
array[j] = swap;
}
}
}
return array;
};
const selectionSort = (nums) => {
const length = nums.length;
let minIndex, temp;
for (let i = 0; i < length - 1; i++) {
minIndex = i;
for (let j = i + 1; j < length; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
temp = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = temp;
}
return nums;
};
const quickSort = (array) => {
if (array.length < 2) return array;
const pivot = array[0];
const small = [];
const big = [];
for (let i = 1; i < array.length; i++) {
if (array[i] <= pivot) {
small.push(array[i]);
} else {
big.push(array[i]);
}
}
return quickSort(small).concat(pivot, quickSort(big));
};
Reference
この問題について(ソートアルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@gunu/정렬-알고리즘テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol