您的位置:首页 > 理论基础 > 数据结构算法

C++数据结构--选择排序

2013-06-12 11:45 483 查看
#include <stdio.h>

typedef int InfoType;

#define n 5 //假设的文件长度,即待排序的记录数目

typedef int KeyType; //假设的关键字类型

typedef struct { //记录类型

KeyType key;
//关键字项

InfoType otherinfo;//其它数据项,类型InfoType依赖于具体应用而定义

} RecType;

typedef RecType SeqList[n+1]; //SeqList为顺序表类型,表中第0个单元一般用作哨兵

void main()

{

void SelectSort(SeqList R);

int i;

SeqList R;

printf("请输入欲排序的数:");

for (i=1;i<=n;i++)

scanf("%d",&R[i].key);

printf("排序前:");

for (i=1;i<=n;i++)

printf("%d ",R[i].key);

printf("\n");

SelectSort(R);

printf("排序后:");

for (i=1;i<=n;i++)

printf("%d ",R[i].key);

printf("\n");

}

//对R[1..n]进行直接选择排序,用R[0]做暂存单元

void SelectSort(SeqList R)

{

int min=0;

void swap(SeqList R,int i,int j);

for(int i=1;i<n;i++)

{

min=i;

for(int j=i+1;j<=n;j++)

{

if(R[min].key>R[j].key)

min=j;

}

if(min!=i)

swap(R,i,min);

}

}

void swap(SeqList R,int i,int j)

{

RecType temp=R[i];

R[i]=R[j];

R[j]=temp;

}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: