内部排序(直接插入排序、冒泡排序)

编程入门 行业动态 更新时间:2024-10-28 04:23:16

内部排序(直接插入排序、冒泡排序)

内部排序(直接插入排序、冒泡排序)

采用顺序存储结构,完成顺序表的创建,实现对顺序表的直接插入排序、冒泡排序。

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
#define FALSE 0
#define TRUE 1
typedef int KeyType;
#define EQ(a,b) ((a)==(b))
#define LT(a,b) ((a)<(b))
#define LQ(a,b) ((a)<=(b))
typedef struct{KeyType key;//关键字项 
}RcdType;
typedef struct{RcdType r[MAXSIZE+1];//r[0]闲置或用作哨兵int length;
}Sqlist; 
typedef RcdType ElemType;
int Create(Sqlist &L)
{int i,n;printf("请输入数据的个数:\n");scanf("%d",&n);printf("请输入各数据:\n");for(i=1;i<=n;i++){scanf("%d",&L.r [i].key);}L.length =n;return 1;
}
void InsertSort(Sqlist &L)
{//生成按关键字非递减有序序列 int i,j;for(i=2;i<=L.length ;++i)if(LT(L.r [i].key,L.r [i-1].key)){L.r [0]=L.r [i];//L.r[0]为监视哨for(j=i-1;LT(L.r [0].key,L.r [j].key);--j)L.r [j+1]=L.r [j];L.r [j+1]=L.r [0]; }   for(int i=1;i<=L.length ;i++){printf("%d ",L.r [i].key);}
}
void BubbleSort(Sqlist &L)
{for(int i=L.length ,change=TRUE;i>1&&change;--i){change=FALSE;for(int j=1;j<i;++j)if(LT(L.r [j+1].key,L.r [j].key)){ElemType temp=L.r [j];L.r [j]=L.r [j+1];L.r [j+1]=temp;change=TRUE;}}for(int i=1;i<=L.length ;i++){printf("%d ",L.r [i].key);}
}
int main()
{Sqlist L;Create(L);printf("对顺序表的直接插入排序结果为:\n");InsertSort(L);printf("\n对顺序表的冒泡排序结果为:\n");BubbleSort(L);
}

更多推荐

内部排序(直接插入排序、冒泡排序)

本文发布于:2023-07-27 22:11:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1227556.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!