[データ構造]ソートアルゴリズム


🔴泡の位置合わせ


数字を一つ一つ比較する.
自転車を回すたびに、最大の数が最後になります.

きほんサイクル


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]);
	}
}