選擇排序

小懿同学發表於2024-05-07
//選擇排序  從序列中找到一個最小值元素,把最小值元素放在整個序列的首部,重複n輪,直到整個序列有序
void SelectSort(int buf[10],int size)
{
	int min  = 0; //記錄最小值元素的下標
	int temp = 0; //備份最小值元素的值

	//需要比較n輪,每輪找到序列中的最小值元素
	for (int n = 0; n < size-1; ++n)  
	{
		 min  = n; //假設每輪序列中的第一個元素是最小值元素

		//找到序列中的最小值元素的下標
		for (int i = n+1; i < size; ++i)
		{
			//每輪需要透過比較的方式才可以確定最小值
			if ( buf[min] > buf[i] )                  
			{
				min = i;//更新當前的最小值元素的下標 
			}
		}

		//找到最小值元素,需要把最小值元素和序列的首部元素進行交換
		temp   = buf[min];
		buf[min] = buf[n];
		buf[n] = temp;
	}
}

相關文章