//实现直接选择排序算法
#include<stdio.h>
#include<malloc.h>
#define MAXE 20
typedef int KeyType;
typedef char InfoType[10];
typedef struct
{
KeyType key;
InfoType data;
}RecType;
void SelectSort(RecType r[],int n)// 直接选择排序算法
{
int i,j,k,l;
RecType temp;
for(i=0;i<n-1;i++)//做第i趟排序
{
k=i;
for(j=i+1;j<n;j++)//在当前无序区r[i....n-1]中选择关键字最小的r[k]
if(r[j].key<r[k].key)
k=j;//k记下目前找到的最小关键字所在的位置
if(k!=i)//交换r[i]和r[k]
{
temp=r[i];
r[i]=r[k];
r[k]=temp;
}
printf(" i=%d ",i);//输出每一趟的排序结果
for(l=0;l<n;l++)
printf("%4d",r[l].key);
printf("\n");
}
}
int main()
{
int i,k,n,m=5;
KeyType a[]={6,8,7,9,0,1,3,2,4,5};
n=sizeof(a)/4;
RecType r[MAXE];
for(i=0;i<n;i++)
r[i].key=a[i];
printf("\n");
printf("初始关键: ");
for(k=0;k<n;k++)
printf("%4d",r[k].key);
printf("\n");
SelectSort(r,n);
printf("最后结果: ");
for(k=0;k<n;k++)
printf("%4d",r[k].key);
printf("\n\n");
return 0;
}
数据结构源码笔记(C语言描述)汇总: