初学数据结构(修改过程)
#include <stdio.h>
typedef int KeyType;
struct DataType
{
KeyType key;
};
int SelectSort(struct DataType a[],int n) // n 为数组中的元素个数
{
int i,j;
int min; /*注意这个 min 记录的是下标,而不是元素*/
struct DataType temp;
for(i = 0; i < n -1; i++) /*这个是 i<n-1 ,如果是 i<n 下面 j=i+1 可能越界,又因为有 j<n 控制,所没有越界*/
{
min = i;
for(j = i + 1; j < n; j++)
{
if(a[j].key < a[min].key)
{
min = j;
}
}
if(min != 1) /*书上的有这个 if 语句,有这个提高了效率*/
{
temp = a[i]; //交换数据
a[i] = a[min];
a[min] = temp;
}
}
}
int main()
{
int i;
int n = 10;
struct DataType test[10] = {64,5,7,89,6,24,100,4,7,18};
SelectSort(test,n); /*注意这个的参数及参数传递*/
for(i = 0; i < n; i++)
{
printf(" %d ",test[i].key);
}
printf("\n");
//system("pause"); //暂停
return 0;
}