首页 > 编程知识 正文

简单选择排序算法c语言,c语言选择排序法代码讲解

时间:2023-05-04 01:02:29 阅读:141693 作者:1315

该算法的实现思想是,对具有n条记录的无序表进行n-1次扫描,第I次从无序表中的第I条记录中找出后序关键字中最小的记录,放在第I条位置。

例如,使用简单的选择排序算法对无序表{56、12、80、91、20}进行排序时,具体步骤如下。

在最初遍历中,从下标为1的位置56找出关键字值最小的记录12,与下标为0的关键字56交换位置:

在第2次扫描中,从下标为2的位置56找出最小值20,与下标为2的关键词56调换位置:

在第3次扫描中,从下标为3的位置80开始找出最小值56,与下标为3的关键词80进行位置调换:

在第四次扫描中,从下标为4的位置91,与最小为80、下标为4的关键字91进行位置置换:

选择完这个简单的排序算法后,无序表将变成有序表。

请选择要轻松排序的实现代码。

#包含

#包含

#define MAX 9

//单个记录的结构

typedef struct {

int key;

}SqNote;

//记录表结构

typedef struct {

SqNote r[MAX];

int length;

}SqList;

//调换两条记录的位置

voidswap(sqnote*a,SqNote *b ) )。

int key=a-key;

a-key=b-key;

b-key=key;

}

//查找表中关键字的最小值

intselectminkey(sqlist*L,int i ) {

int min=i;

//下标从i 1扫描到最后的关键词,找到最小值所在的位置

wile(I1length ) {

if(L-R(min ).keyl-R ) ) I1 ).key ) {

min=i 1;

}

I;

}

返回时间;

}

//简析排序算法的实现函数

voidselectsort(sqlist*L ) {

for(intI=0; ilength; I ) {

//为了寻找第I个位置而放置的最小值的位置

intj=selectminkey(L,I );

如果//j和I不相等,最小值表示下标不在I的位置,需要更换

if(I!=j({

SWAP () L-r[j],) L-r[j] );

}

}

}

int main ()。

sqlist*L=(sqlist* ) malloc (sizeof ) sqlist );

L-length=8;

L-r[0].key=49;

L-r[1].key=38;

L-r[2].key=65;

L-r[3].key=97;

L-r[4].key=76;

L-r[5].key=13;

L-r[6].key=27;

L-r[7].key=49;

选择(l );

for(intI=0; ilength; I ) {

printf('%d ',L-r[i].key );

}

返回0;

}

执行结果:

13 27 38 49 49 65 76 97

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。