选择排序:
基本思想;1.在未排序列中找最大或最小的元素,存放在排序序列起始位置
2.从未排序列中寻找最大或最小的元素,放在未排序列最前面(以排序列最后)
3.重复2步骤直到排完为止
#include<stdio.h>
#include<stdlib.h>
void SelectionSort(int *num,int n)
{
int i = 0;
int min = 0;
int j = 0;
int tmp = 0;
for(i = 0;i < n-1;i++)
{
min = i;//每次讲min置成无序组起始位置元素下标
for(j = i;j < n;j++)//遍历无序组,找到最小元素。
{
if(num[min]>num[j])
{
min = j;
}
}
if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置
{
tmp = num[min];
num[min] = num[i];
num[i] = tmp;
}
}
}
int main()
{
int num[10] = {10,19,18,39,73,1,4,3,9,27};
int i = 0;
SelectionSort(num,10);//这里需要将数列元素个数传入。有心者可用sizeof在函数内求得元素个数。
for(i = 0;i < 10;i++)
{
printf("%d ",num[i]);
}
system("pause");
return 0;
}