(2)ソートアルゴリズム:ソートを選択

並べ替えを選択する主なポイント:現在の並べ替えられていない整数から最小の整数見つけて、並べ替えられたリストの最後に配置します(2つのキーワード:並べ替えと並べ替えなしに注意してください)。つまり、並べ替えの最小値を選択します。左側。

コントラストバブリングソート:バブリングソートの各比較は相互作用する可能性があり、選択的ソートの各トラバーサルは、現在のトラバーサルの最小値を持つ添え字のみを記録し、トラバーサルが完了した後に1回の交換のみが発生します。

 

コードとデバッグ結果:

#include <iostream>

using namespace std;

void select_sort(int list[], int num)
{
	int min_pos = 0; //每次循环最小数的位置

	for (int i = 0; i < num - 1; i++)
	{
		min_pos = i;

		for (int j = i + 1; j < num; j++)
		{
			if (list[min_pos] > list[j])
				min_pos = j; //记录最小数值的下标
		}

		swap(list[i],list[min_pos]); //每次遍历只发生一次交换
	}
}


int main()
{
	int arr[10] = {1,2,0,6,9,3,5,8,4,7};

	select_sort(arr,sizeof(arr)/sizeof(arr[0]));

	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
		cout << arr[i] << " ";

	cout << endl << endl << endl << endl;

	return 0;
}

 

選択ソートの時間計算量:

    比較の数:(N-1)+(N-2)+ ... + 2 + 1 =((N-1)+ 1)*(N-1)/ 2 = N ^ 2 / 2-N / 2;

   交換回数:N-1

   したがって、時間計算量は次のようになります。(N ^ 2 / 2-N / 2)+(N-1)= N ^ 2/2 + N / 2-1

   Big Oの法則によれば、最高次の項が保持され、一定の銀が取り出されます。時間計算量はO(N ^ 2)です。

 

 

おすすめ

転載: blog.csdn.net/weixin_40204595/article/details/106311537