基本思想:每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录;
-
#include<stdio.h>
-
#define N 6
-
typedef struct
-
{
-
int r[N];
-
int length;
-
-
}Sqlist;
-
void SelectSort(Sqlist *L);
-
void Init(Sqlist *L);
-
void main()
-
{
-
int i;
-
Sqlist Sqlist1;
-
Init(&Sqlist1);
-
printf("请输入%d个数,并用空格隔开:\n",N);
-
for(i=0;i<N;i++)
-
{
-
scanf("%d",&Sqlist1.r[i]);
-
Sqlist1.length++;
-
}
-
printf("排序前:\n");
-
for(i=0;i<Sqlist1.length;i++)
-
{
-
printf("%d",Sqlist1.r[i]);
-
}
-
SelectSort(&Sqlist1);
-
printf("\n排序后:\n");
-
for(i=0;i<Sqlist1.length;i++)
-
{
-
printf("%d",Sqlist1.r[i]);
-
}
-
system("pause");
-
}
-
-
void Init(Sqlist *L)
-
{
-
L->length=0;
-
}
-
void SelectSort(Sqlist *L)
-
{
-
int i;
-
int k;
-
int j;
-
int tmp;
-
for(i=0;i<L->length;i++)
-
{
-
k=i;
-
for(j=i+1;j<L->length;j++)//选择最小的记录
-
if(L->r[k]>L->r[j])
-
k=j;
-
if(k!=i)//把最小的记录交换到i位置
-
{
-
tmp=L->r[i];
-
L->r[i]=L->r[k];
-
L->r[k]=tmp;
-
}
-
}
-
}
阅读(766) | 评论(0) | 转发(0) |