[データ構造]ソートアルゴリズム
🔴泡の位置合わせ
数字を一つ一つ比較する.
自転車を回すたびに、最大の数が最後になります.
きほんサイクル
1番目の数字と2番目の数字を比較し、1番目の数字が大きい場合はソートし、1番目の数字と2番目の数字の間で位置を変換する必要があります.その後、2番目は3番目と比較し、3番目は4番目と比較し、4番目は5番目と比較し、各サイクルで合計4回の繰り返し文を実行します.
この繰り返しを数字の個数で行います.
したがって,大for反復文のフレームワークはN回反復,フレーム内の反復文はN−1回反復であるため,N(N−1)回反復である.その後、Bubbleソートが実行されるたびに最大数が一番後ろに並び、ソートされた最大数をソートする必要がないので、コードを少し修正して重複回数を減らしました.
パフォーマンス:
Bubbleソートの場合、ソートされた数値に適用されると、最適なパフォーマンスが得られます.しかし、ソートできない数字については、最悪の場合(n)(n-1)/2回繰り返される性能が現れ、非常に非効率なソート方法である.
性能面では多少の欠点がありますが、使いやすいのがメリットです.
実装コード
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define Max 5
int main()
{
int Ary[5] = { 7,1,9,5,2 };
int Temp = 0;
//<--------------n번 반복--------------->
for (int j = 0; j < Max; j++)
{
//<--------(n-1)/2번 반복-------->
for (int i = 0; i < Max - (1+j); i++)
{
if (Ary[i] > Ary[i + 1])
{
Temp = Ary[i];
Ary[i] = Ary[i + 1];
Ary[i + 1] = Temp;
}
}
}
//<-----출력해서 확인----->
for (int i = 0; i < Max; i++)
{
printf("%d | ", Ary[i]);
}
}
🔴整列挿入
前のすべての数値(ソートされた数値)と比較し、順序を変更します.
きほんサイクル
挿入ソートは、その名の通り正しい位置に挿入されるソートです.プロセスは2番目から徐々に大きくなり、前のすべての数字と比較されます.図を例にとると、4番目の数字1と前の数字5を比較する.1は5より大きいので、1の位置ではなく、5を後ろに押します.このとき後押しする理由は,4番目の数字1を正しい位置に挿入したときに空間を確保するためである.そして3番目、2番目、1番目の数字を比較して、自分より小さい状況が見つかるまで.自分より小さい数字がある場合は、その数字を基準に+1のインデックス位置に挿入します.
パフォーマンス:
泡の並べ替えなどの利点があります.並べ替えられた配列に対して良好なパフォーマンスを示します.2つの複文を使用して、適切な位置が見つかるまで数字を後ろに押すには、時間がかかる場合があります.また、降順ではパフォーマンスが最悪になる場合があります.
実装コード
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define Max 5
int main()
{
int Ary[Max] = { 4, 1, 3 ,5 ,2 };
int temp = 0;
int Num = 0;
int Keep = 0;
int j = 0;
for (int i = 1; i < Max; i++)
{
Num = Ary[i];
for (j = i - 1; j >= 0; j--)
{
if (Ary[j] > Num)
Ary[j + 1] = Ary[j];
else
{
break;
}
}
Ary[j + 1] = Num;
}
for (int i = 0; i < Max; i++)
{
printf("%d | ", Ary[i]);
}
}
Reference
この問題について([データ構造]ソートアルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@shin75492/자료구조-정렬-알고리즘テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol