天天看點

[算法天天練]選擇排序法

#include<stdio.h>

void show(int arr[], int length)
{
	for(int i=0; i<length; i++)
	{
		printf("%d ", arr[i]);
	}	
	printf("\n");
}

void _swap(int *a, int *b)
{
	int tmp = *a;
	*a = *b;
	*b = tmp;
}

void SelectSort(int arr[], int length)
{
	size_t i,j;
	int min;
	
	for(i=0; i<length-1; i++)
	{
		//假設arr[i]為最小的數
		min = arr[i];
		
		//通過循環擷取數組中剩餘數中的最小數
		for(j=i+1; j<length; j++)
		{
			if(min > arr[j])
			{
				_swap(&min, &arr[j]);
			}
		}
		
		//将最小的數放到正确的位置
		if(arr[i] != min)
		{
			 _swap(&arr[i],&min);
		}
	}
}

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

  

轉載于:https://www.cnblogs.com/eternal1025/p/4427963.html