选择法排序:每次选择所要排序的数组中的最大值(由小到大排序则选择最小值)的数组元素,将这个数组元素的值与最前面没有进行排序的数组元素的值互换。以数字9、6、15、4、2为例,采用选择法实现数字按从小到大进行排序,每次交换的顺序如图所示。
从图可以发现,在第一次排序过程中将第一个数字和最小的数字进行了位置互换;而第二次排序过程中,将第二个数字和剩下的数字中最小的数字进行了位置互换;依此类推,每次都将下一个数字和剩余的数字中最小的数字进行位置互换,直到将一组数字按从小到大排序。
下面通过代码来说明如何通过程序使用选择法实现数组元素从小到大的排序。
void my_swap(int *arr,int i,int j)
{
int tmp = arr[i];
arr[i] = arr[j];
arr[j] =tmp;
}
void SelectSort(int *arr,int sz)
{
int i = 0;
int j = 0;
int min = 0;
int tmp = 0;
for (i =0;i<sz-1;i++)
{
min = i;
for (j=i;j<sz;j++)
{
if (arr[j]<arr[min])
{
min = j;
}
}
if (i != min)
{
my_swap(arr,min,i);
//tmp = arr[min];
//arr[min] = arr[i];
//arr[i] = tmp;
}
}
}